用Java输出正确的素数
我对目前正在执行的Java程序有一个小问题:用Java输出正确的素数,java,primes,Java,Primes,我对目前正在执行的Java程序有一个小问题: public class PrimeNumbers { public static void computePrimeNumbers(boolean[] prime, int n) { for (int i = 2; i < n; i++) { if (prime[i] == true) { for (int j = 2; j < n; j++) {
public class PrimeNumbers {
public static void computePrimeNumbers(boolean[] prime, int n) {
for (int i = 2; i < n; i++) {
if (prime[i] == true) {
for (int j = 2; j < n; j++) {
if ((j%i == 0) && (j != i)) {
prime[j] = false;
//System.out.println(j + " = " + prime[j]);
}
}
}
}
}
public static void main(String[] args) {
int n = 13;
boolean[] prime = new boolean[n];
prime[0] = false;
prime[1] = false;
for (int i = 2; i < n; i++) {
prime[i] = true;
}
computePrimeNumbers(prime, n);
for (int i = 0; i < n; i++) {
System.out.println(i + " = " + prime[i]);
}
}
}
公共类素数{
公共静态void computePrimeNumbers(布尔[]素数,int n){
for(int i=2;i
如果整数(i)是素数,程序应输出“true”,否则输出false。嵌套for循环中if语句中注释掉的代码片段为我提供了正确的布尔语句(即,它在运行时显示的整数不是素数),然而,main中的最后一个for循环似乎只是显示给prime数组的初始值——因此我假设ComputePrimeEnumbers的结果在某处被覆盖了
感谢您的帮助。如果
条件使用赋值运算符而不是相等运算符,则条件:
if (prime[i] = true) { // should be if(prime[i] == true) or just if(prime[i])
prime[i]=true
将值true
分配给数组元素,并且if
条件将始终计算为true。您是否尝试过遍历纸上的逻辑?使用老式的笔和键盘?if(prime[i]=true)
你是在比较等式还是赋值?这通常有助于确保你对逻辑的假设是真的啊,一个经典的、鬼鬼祟祟的赋值啊,是的,我忘记了方法中if(prime[i]=true)语句中的额外=了。不管怎样,现在输出是正确的,你确定我们需要偶数==应该只要(prime[i])满足@回答错了,当然。但重点是指出这两个运营商之间的区别。
if (prime[i] == true) {
for (int j = 2; j < n; j++) {
if ((j % i == 0) && (j != i)) {
prime[j] = false;
System.out.println(j + " = " + prime[j]);
}
}
}
4 = false
6 = false
8 = false
10 = false
12 = false
6 = false
9 = false
12 = false
10 = false
0 = false
1 = false
2 = true
3 = true
4 = false
5 = true
6 = false
7 = true
8 = false
9 = false
10 = false
11 = true
12 = false