-6

メイン関数からプライムを印刷するにはどうすればよいですか。私のコードを以下に示します...

public static boolean[] sieve(int n) {
    boolean[] prime = new boolean[n+1];
    Arrays.fill(prime, true);
    prime[0] = false;
    prime[1] = false;
    int m = (int) Math.sqrt(n);

    for (int i = 2; i < m; i++) {
        if (prime[i])
            for (int k=i*i; k<=n; k+=i )
                prime[k] = false;
    }
    return prime;
}
4

2 に答える 2

2

これはあなたが欲しいですか?

public static void getPrime(int n) {
    boolean[] arr = new boolean[n+1];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = isPrime(i);
        System.out.println(i + "," + arr[i]);
    }

}

public static boolean isPrime(int i) {
    if (i == 0) {
        return false;
    }
    for (int j = 2; j < i; j++) {
        if (i % j == 0)
            return false;
    }
    return true;
}

1からnまでの数が素数かどうかを確認したい場合は、次のようにできます

public static void getPrime(int n) {
    for (int i = 0; i < n+1; i++) {
        System.out.println(i + "," + isPrime(i));
    }

}

public static String isPrime(int i) {
    if (i == 0) {
        return "Not a prime";
    }
    for (int j = 2; j < i; j++) {
        if (i % j == 0)
            return "Not a prime";
    }
    return "prime";
}

素数のみが必要な場合は、次のようにできます

public static void getPrime(int n) {
    for (int i = 0; i < n+1; i++) {
        if(isPrime(i))
        {
            System.out.println(i);
        }
    }

}

public static boolean isPrime(int i) {
    if (i == 0) {
        return false;
    }
    for (int j = 2; j < i; j++) {
        if (i % j == 0)
            return false;
    }
    return true;
}
于 2013-06-25T17:20:01.747 に答える