如果在java中找到了一个使用此方法的主要检查器。 有人可以解释一下,为什么for循环到达搜索到的素数的平方根? - 有更有效的方法吗? - 谢谢!
public static boolean isPrime(int p){
if(p % 2 == 0 || p < 2){
return false;
}
else {
System.out.println("Sqare: " + (int)Math.sqrt(p));
for(int i = 3; i <= (int)Math.sqrt(p); i = i+2){
if(p % i == 0){
return false;
}
}
}
return true;
}
答案 0 :(得分:2)
如果数字不是素数,那么它至少有两个因子:例如63 = 7 x 9或121 = 11 x 11。两个因子中较小的一个必须小于或等于原始数字的平方根。如果您发现任何因素,那么该数字不是素数,因此您可以在找到第一个因子后停止搜索。
通过搜索并包括平方根,您可以保证找到合数的因子。如果搜索到达平方根而没有找到因子,那么该数字必须是因子1和数字本身的素数。没有必要继续在平方根之外进行搜索,因为你不会学到任何新东西并且会浪费时间。