簡體   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