当我运行程序时,我想要打印素数。出于某种原因,所有输入的数字都会打印有人可以帮助我解决我的错误。
for(int i=3; i*i<=n; i+=2) {
if((n%i)==0) {
isPrime=false;
}
if(n%2==0) {
isPrime = false;
}
else {
isPrime = true;
}
}
if(isPrime = true) {
mVector.add(n);
}
if(n==0){
System.out.println(mVector);
break;
}
答案 0 :(得分:4)
isPrime = true
是true
对变量isPrime
的赋值。赋值表达式将始终返回指定的值(即true
)。你需要比较:
if (isPrime == true)
但实际上只是
if (isPrime)
会更好。
另外,如果n
是奇数,那么对于for循环的每次迭代,您都会不断将isPrime
更改为true
:
if(n%2==0) {
isPrime = false;
}
else {
isPrime = true;
}
我建议像:
boolean isPrime = true;
if (n%2 == 0) {
isPrime = false;
}
for (int i = 3; isPrime && i*i <= n; i += 2) {
if(n%i == 0) {
isPrime = false;
}
}
答案 1 :(得分:2)
if(isPrime == true) //change = to ==
它可能对你有帮助