用Java打印布尔数组
如何从主函数打印素数。 我的代码如下用Java打印布尔数组,java,Java,如何从主函数打印素数。 我的代码如下 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++) {
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;
}
看起来您不想打印布尔数组:它没有什么用处。您需要从中打印素数,这可以通过枚举索引、检查素数[i]是否为真以及打印索引(如果为真)来完成
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
}
}
这是你想要的吗
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到n的素数,你可以使用这段代码。但是您可以简化如下:公共静态void getPrimeint n{for int i=0;i