Java素数检查器
如果在java中找到一个主检查器,它将使用此方法。 有人能解释一下,为什么for循环指向所搜索素数的平方根有没有更有效的方法? -谢谢大家!Java素数检查器,java,methods,primes,Java,Methods,Primes,如果在java中找到一个主检查器,它将使用此方法。 有人能解释一下,为什么for循环指向所搜索素数的平方根有没有更有效的方法? -谢谢大家! public static boolean isPrime(int p){ if(p % 2 == 0 || p < 2){ return false; } else { System.out.
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;
}
公共静态布尔值isPrime(int p){
如果(p%2==0 | | p<2){
返回false;
}
否则{
System.out.println(“Sqare:+(int)Math.sqrt(p));
对于(int i=3;i如果一个数字不是素数,那么它至少有两个因子:例如63=7 x 9或121=11 x 11。这两个因子中较小的一个必须小于或等于原始数字的平方根。如果你找到了任何因子,那么这个数字就不是素数,因此你可以在找到第一个因子后停止搜索
通过搜索到平方根并包括平方根,您可以保证找到一个复合数的因子。如果搜索超过平方根而未找到因子,则该数必须以因子1和该数本身为素数。无需在平方根之外继续搜索,因为您将不会学到任何新内容d将浪费时间。如果一个数字不是素数,那么它至少有两个因子:例如63=7 x 9或121=11 x 11。这两个因子中较小的一个必须小于或等于原始数字的平方根。如果找到任何因子,那么该数字就不是素数,因此一旦找到第一个因子,就可以停止搜索
通过搜索到平方根并包括平方根,您可以保证找到一个复合数的因子。如果搜索超过平方根而未找到因子,则该数必须以因子1和该数本身为素数。无需在平方根之外继续搜索,因为您将不会学到任何新内容d将浪费时间。可能重复的代码也请检查:如果您想理解代码,请尝试干运行代码。获取不同的数字并尝试在其上运行。或者在调试环境中尝试。注意,当p
=2时,代码失败。初始的if
语句需要调整。类似的返回p==2;
就可以了。另外,如果您想理解代码,请尝试干运行代码。取不同的数字并尝试在其上运行。或者在调试环境中尝试。刚刚注意到,当p
=2时,代码会失败。初始的if
语句需要调整。类似r的内容eturn p==2;
就可以了。