矢量代码中的素数

时间:2013-04-07 22:26:22

标签: java

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

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

2 个答案:

答案 0 :(得分:4)

isPrime = truetrue对变量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 ==

它可能对你有帮助