这是一个奇怪的问题,但是我很好奇,有人可以向我解释一下,这两种检查质数的相同方法有什么区别?
public boolean isPrime(int numberToCheck){
for(int divider =2; divider<numberToCheck; divider++){
if(numberToCheck%divider == 0){
return false;
}
}
return true;
AND
for(int divider =2; divider<numberToCheck; divider++){
if(numberToCheck%divider != 0){
return true;
}
}
return false;
}
当他们返回2个不同的结果时,我仍然不明白为什么,我一直认为这2个是同一件事 如果输入为1,101,11,12,200,203,5,则最上面的一个仅返回101,11,5,而另一个返回所输入的所有内容
答案 0 :(得分:2)
第二部分不正确
for(int divider =2; divider<numberToCheck; divider++){
if(numberToCheck%divider != 0){
return true;
}
}
此代码将返回第一个numberToCheck
满足您所不想要的divider
表达式之后的if
是质数(例如,如果numberToCheck
为6且divider
4,然后numberToCheck%divider != 0
为真)。
第一个示例是正确检查2和numberToCheck
之间的所有数字,并在逻辑上返回numberToCheck
不是素数(如果它可以被任何divider
整除)。