我正在编写一个程序,它接受一个整数作为输入,并输出一个消息,无论输入的整数是否为素数.我使用的算法如下... 要求: n> 0,要求: isPrime < - true,对于 i = 2到sqrt(n)do,如果 n%i = 0 则 isPrime < - false 结束if和end for Then打印数字是否为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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能提供帮助,我将不胜感激,谢谢!
你的问题在于这一行:
if (isPrime = true){
Run Code Online (Sandbox Code Playgroud)
你做了一个作业,而不是比较true,所以声明总是如此true.
使用==比较布尔值,或更好,但因为isPrime已经是boolean:
if (isPrime){
Run Code Online (Sandbox Code Playgroud)