我正在编写一个程序,它将整数作为输入,并输出一个消息,无论输入的整数是否为素数。我使用的算法如下...... 要求: n> 0,要求: isPrime< - true, i = 2到sqrt(n)做,如果 n%i = 0 那么 isPrime< - false 结束如果和结束然后打印该号码是否为Prime。这是我的代码到目前为止,代码不起作用,我无法找到问题。
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n;
System.out.println("Input a positive integer");
n = kb.nextInt();
while (n>0){
boolean isPrime = true;
for (int i =2; i <= n/2;i++){
if(n % i == 0){
isPrime = false;
break;
}
}
if (isPrime = true){
System.out.println("The integer, " + n + ", is a prime");
break;
}
else{
System.out.println("The integer, " + n + ", is not a prime");
break;
}
}
}
}
如果有人能提供帮助,我将不胜感激,谢谢!
答案 0 :(得分:8)
你的问题在于这一行:
if (isPrime = true){
您进行了分配,而不是与true
进行比较,因此该陈述始终为true
。
使用==
来比较布尔值,或者更好,因为isPrime
已经是boolean
:
if (isPrime){
答案 1 :(得分:1)
在文中你说你打算实现的算法检查整数,直到n
的平方根,但你的代码一直到n/2
(参见for循环)。 / p>
您当前代码无效的原因是因为if (isPrime = true)
是一项赋值操作,应该比较if (isPrime == true)
注意两个等号。