0

メソッドを使用して、配列からすべての素数を出力したいと思います。1 つの int で実行できますが、配列から特定の数値を返す方法がわかりません。手伝ってくれてありがとう!

public static boolean isPrime(int [] tab) {
        boolean prime = true;
        for (int i = 3; i <= Math.sqrt(tab[i]); i += 2)
            if (tab[i] % i == 0) {
                prime = false;
                break;
            }
        for(int i=0; i<tab.length; i++)
        if (( tab[i]%2 !=0 && prime && tab[i] > 2) || tab[i] == 2) {
            return true;
                } else {
            return false;
        }
        //return prime;

}

お二人ともありがとう。解決したようです:

public static void isPrime(int[] tab) {
        for (int i = 0; i < tab.length; i++) {
            if (isPrimeNum(tab[i])) {
                System.out.println(tab[i]);
            }
        }


    }

    public static boolean isPrimeNum(int n) {
        boolean prime = true;
        for (long i = 3; i <= Math.sqrt(n); i += 2) {
            if (n % i == 0) {
                prime = false;
                break;
            }
        }
        if ((n % 2 != 0 && prime && n > 2) || n == 2) {
            return true;

        } else {
            return false;
        }
    }
4

2 に答える 2

2

これを 2 つの方法に分けることをお勧めします。

  • 単一の数値が素数かどうかを判断する 1 つの方法
  • 配列を反復処理し、各数値で最初のメソッドを呼び出し、メソッドが true を返す値を出力する 1 つのメソッド。

これにより、2 つの懸念事項がきれいに分離されます。これを行う方法に行き詰まっている場合は、どの部分が難しいかを詳しく教えてください。(これは宿題だと思っているので、コードを含めていません。)

于 2009-12-28T12:55:56.047 に答える
0

あなたが持っていると仮定します:

  • 整数の 1 つの配列。素数の配列と素数でない配列があります。
  • これらの数値のいずれかが素数であるかどうかをテストする関数。

配列を反復処理し、数値ごとに次のようにします。

if (isPrime(n)) {
    system.out.println(n);
}

おそらく、一度に複数の int を試して実行したくないでしょう。一度に 1 つずつコーディングする方がはるかに簡単です。

于 2009-12-28T12:57:38.417 に答える