我正在尝试使用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");
}
}
}
}
由于
答案 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");
}
}
}
}