我想打印所有两位数长度的质数。下面是我的代码:
for(int input = 11; input <= 99; input += 2){
for(int x = 2; x < (int)Math.sqrt(input) + 1; x++){
if(input%x != 0){
System.out.println(input);
break;
}else{
break;
}
}
}问题是它打印的像35或49这样的数字不是质数。
发布于 2010-10-28 03:13:12
这是可行的。您可以看到输出的here。
public class Main {
public static void main(String[] args) {
for(int input = 11; input <= 99; input += 2){
boolean found = false;
for(int x = 2; x < (int)Math.sqrt(input) + 1; x++){
if(input%x == 0){
found = true;
break;
}
}
if(!found) {
System.out.println(input);
}
}
}
}发布于 2010-10-28 03:01:17
您的primeness测试不正确。一旦找到一个input不能被除数整除的除数,就停止测试一个数字(input)。
这不是素数的定义-你需要测试input数不能被任何小于它的除数整除-换句话说,你需要测试x的所有值,然后才能将一个数声明为素数。
当input可以被x整除时,你可以跳出检查input % x != 0的循环,但当它不可除时,你就不能这样做了-当这个条件为真时,你需要继续检查!
发布于 2010-10-28 03:15:45
我总是喜欢这样的问题,最简短和最明显的答案就是硬编码输出:
System.out.println("11\n13\n17\n19\n23\n29\n31\n37\n41\n43" +
"\n47\n53\n59\n61\n67\n71\n73\n79\n83\n89\n97");https://stackoverflow.com/questions/4036660
复制相似问题