我正在尝试创建一个程序来确定输入的数字是否为素数。它总是返回它不是素数。我做错了什么?
这是我的代码:
public class PrimeNumber {
public static void main(String[] args) {
System.out.println("Enter a number");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
sc.close();
boolean y = false;
for(int i = 2; i <= x; i++) {
if(x % i == 0) {
y = true;
}
y = false;
}
if (y = true) {
System.out.print(x + " is not a prime number");
}
else {
System.out.print(x + " is a prime number");
}
}
}
答案 0 :(得分:2)
当你找到一个因素时,你现在没有打破你的循环。鉴于每个数字本身都可以被整除,您的条件总是在最后一次迭代中传递。另请注意,您无需检查str[...]
的平方根之上的任何数字。
更好的是:
x
或者如果您更喜欢使用流:
boolean prime = true;
for (int n = 2; n * n <= x && prime; n++)
prime = x % n != 0;
if (prime)
...
答案 1 :(得分:0)
轻微错误:
如果你说if(y=true)
,y将被赋值为true,相当于if(true)
。所以第一次检查就变成了现实。
if(y == true) {
System.out.print(x + " is not a prime number");
}