繁体   English   中英

Java Prime检查器

[英]Java Prime Checker

如果在使用此方法的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;  
}

如果数字不是素数,则它至少具有两个因数:例如63 = 7 x 9或121 = 11 x 11。 两个因子中的较小者必须小于或等于原始数字的平方根。 如果找到任何因素,则该数字不是质数,因此一旦找到第一个因素,就可以停止搜索。

通过搜索并包括平方根,可以保证找到一个复合数的因数。 如果搜索超过平方根而没有找到因数,则该数字必须是因数为1的质数和数字本身。 无需进行除平方根之外的搜索,因为您不会学到任何新知识,并且会浪费时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM