素数检测器不工作

时间:2018-04-26 03:17:07

标签: java

我正在尝试创建一个程序来确定输入的数字是否为素数。它总是返回它不是素数。我做错了什么?

这是我的代码:

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

2 个答案:

答案 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");
}