0

ネストされた for ループを使用して素数のリストを取得する必要があります。コードは次のとおりです。

public static void main(String[] args) {

        for (int i = 2; i <= 10; i++)
        {
            for (int d = 3; d <= 10; d = d + 2)
            {
                 int result = d % i;
                 System.out.println(result);

            }
        }
    }

ここにロジックがあると思いますが、結果は少し気になりませんでした。何か提案をお願いします。

4

3 に答える 3

4

このように実行すると、次のことがわかります。

for (int i = 2; i <= 10; i++)
    {
        for (int d = 3; d <= 10; d = d + 2)
            {
                int result = d % i;
                System.out.println("i="+i+" d:"+d+" result:"+result);

            }
        }
    }
于 2012-11-05T20:20:11.460 に答える
2

Java コードは次のとおりです (アルゴリズムはエラトステネスのふるいを使用します)。

public static void main(String[] args) { 
    int N = Integer.parseInt(args[0]);

    // initially assume all integers are prime
    boolean[] isPrime = new boolean[N + 1];
    for (int i = 2; i <= N; i++) {
        isPrime[i] = true;
    }

    // mark non-primes <= N using Sieve of Eratosthenes
    for (int i = 2; i*i <= N; i++) {

        // if i is prime, then mark multiples of i as nonprime
        // suffices to consider mutiples i, i+1, ..., N/i
        if (isPrime[i]) {
            for (int j = i; i*j <= N; j++) {
                isPrime[i*j] = false;
            }
        }
    }

    // count primes
    int primes = 0;
    for (int i = 2; i <= N; i++) {
        if (isPrime[i]) primes++;
    }
    System.out.println("The number of primes <= " + N + " is " + primes);
}

上記のサンプル コードは、このサイトからのものです。

于 2012-11-05T20:24:01.907 に答える
2

あなたがしていることは、その中で素数を見つけることに少し関連しているだけですmodulus。演算子を使用していますが、それは必要ですが、それ以上のものではありません。

実際には、その操作の結果を利用する必要があります。

あなたは次に従うことができますpseudo-code: -

for i = 2 to 10 {

    1. set a boolean flag for prime to false;

    2. for j = 2 to (i - 1) {  // Since we just need to check modulus till that number
        1. check the result of `i % j`
        2. If any of the result in this loop is `0`, then `i` is not a prime number. 
           So, set the `prime` flag to false, and break out of loop, 
    }
    3. check the value of `prime` flag. If it is `true`, print number is `prime`. 
       Else print not prime 
}

自分で試してみるのが有益なので、コードを公開するつもりはありません。アルゴリズムステップの形で与えられた問題ステートメントを実装する方法を学びます。

于 2012-11-05T20:26:21.533 に答える