我听说你可以通过检查它是否可以被2或3整除然后6k + 1或6k - 1(17 - > 6(3) - 1)
来确定数字是否为素数当我尝试这个时,它说1125是素数。它在if语句中将num - 1%6计算为true,但在print函数中不是。语法与num + 1%6 if语句相同,因此我不确定发生了什么。
boolean prime = false;
if(num%2 != 0){
if(num%3 != 0){
if(((num+1)%6) == 0)
prime = true;
if(((num-1)%6) == 0)
prime = true;
System.out.print((1124%6 == 0));
}
}
答案 0 :(得分:2)
您的代码永远不会在1125上超过(num % 3 != 0)
,因为1125可以被3整除。因此,在该数字上,您的System.out永远不会被执行。
在这里,我调整了一下你的代码:
public static void main(String[] args) {
for (int num = 2; num < 2000; num++) {
boolean prime = false;
if (num % 2 != 0) {
if (num % 3 != 0) {
if (((num + 1) % 6) == 0) prime = true;
if (((num - 1) % 6) == 0) prime = true;
}
}
System.out.println(num + " prime? " + prime);
}
}
示例输出:
1124 prime? false
1125 prime? false
1126 prime? false
1127 prime? true
1127不是素数(7 * 161)所以算法不起作用。虽然我怀疑它在寻找优秀候选人方面非常擅长。