我想打印所有2位数的素数.这是我的代码:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它打印的数字如35或49不是素数.
您对完整性的测试不正确.input一旦找到input不能被整除的除数,就停止测试数字().
这不是素数的定义 - 你需要测试input数字不能被任何除数除以它的除数 - 换句话说,你需要x在将数字声明为素数之前测试所有的值.
你可以突破检查input % x != 0何时可input被整除的循环x,但不能在它不可分割的时候 - 你需要继续检查这个条件是否为真!
我总是喜欢这样一个问题:最简单和最明显的答案是硬编码输出:
System.out.println("11\n13\n17\n19\n23\n29\n31\n37\n41\n43" +
"\n47\n53\n59\n61\n67\n71\n73\n79\n83\n89\n97");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3849 次 |
| 最近记录: |