如何从主功能打印素数。 我的代码如下......
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;
}
答案 0 :(得分: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;
}
答案 1 :(得分:1)
看起来你不想打印boolean
数组:它没什么用处。您需要打印Sieve of Eratosthenes中的素数,这可以通过枚举索引,检查primes[i]
是否为true
来完成,然后打印索引。
boolean primes = sieve(100);
for (int i = 0 ; i <= 100 ; i++) {
if (primes[i]) {
// This is where you print i or do whatever else you think is appropriate
}
}