筛选Eratosthenes java素数如果声明

时间:2015-06-03 13:15:11

标签: java if-statement numbers statements

我正在尝试使用for循环然后使用if语句来检查Eratosthenes的Sieve,检查最多30的素数但是我有问题。由于我的代码2,3和5都显示为非素数,因为它们当然可以被2,3和5整除。如何编辑我的代码以使这些代码成为素数?

这是我的代码

public class prime {

public static void main(String[] args) {
    for(int a=2; a<=30; a++){
        if(a%2 == 0 || a%3 == 0 || a%5 == 0){
            System.out.println(a +" = Not Prime");
        }
        else
        {
            System.out.println(a + " = Prime");
        }
    }
}

}

由于

3 个答案:

答案 0 :(得分:1)

在测试可分性之前,添加if语句以明确测试a为2,3或5。

答案 1 :(得分:0)

prime 的定义是它不能被1或其自身以外的其他自然数除尽。因此,您需要为此设计一个测试,例如a != 2等,或a / 2 != 1。在您的代码中:

if (a != 2 && a % 2 == 0 || ...

答案 2 :(得分:0)

感谢您的帮助,我在if语句中添加了一些代码来检查它是否为2,3或5.

public class prime {

public static void main(String[] args) {
    for(int a=2; a<=30; a++){
        if(**a != 2** && a%2 == 0 ||**a !=3** && a%3 == 0 ||**a != 5** && a%5 == 0){
            System.out.println(a +" = Not Prime");
        }
        else
        {
            System.out.println(a + " = Prime");
        }
    }
}

}