Java Prime Checker

时间:2016-12-11 17:52:37

标签: java methods primes

如果在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;  
}

1 个答案:

答案 0 :(得分:2)

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

通过搜索并包括平方根,您可以保证找到合数的因子。如果搜索到达平方根而没有找到因子,那么该数字必须是因子1和数字本身的素数。没有必要继续在平方根之外进行搜索,因为你不会学到任何新东西并且会浪费时间。