-2

当我运行我的程序时,我只想打印素数。出于某种原因,所有输入的数字都会打印出来。有人可以帮我解决我的错误在哪里。

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;
}
4

2 回答 2

4

isPrime = truetrue对变量的赋值isPrime。赋值表达式将始终返回分配的值(即true)。你需要比较:

if (isPrime == true)

但真的只是

if (isPrime)

会更好。

此外,如果n很奇怪,您将不断更改isPrimetruefor 循环的每次迭代:

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;
    }
}
于 2013-04-07T22:31:29.263 回答
2
if(isPrime == true) //change = to ==

它可能会帮助你

于 2013-04-07T22:30:58.053 回答