我想打印所有两位数长的质数。这是我的代码:
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 等不是素数的数字。
您的素数测试不正确。您停止测试一个数字(input
)一旦你找到一个除数input
不可被整除。
这不是素数的定义 - 你需要测试input
数字不能被整除any小于它的除数 - 换句话说,你需要测试所有的值x
在你可以声明一个数字为素数之前。
您可以跳出检查循环input % x != 0
当input
可以整除x
,但当它不可整除时则不然 - 你需要继续检查这个条件何时为真!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)