2015-09-12 40 views
-3

這是我的代碼,並且非常暴力。尋求更智能的解決方案。我記得在數論中有一些理論來檢查一個數是否是一個高效的素數,但是找不到它。任何人都有更聰明的想法,我很感激有效的方法來檢查Python中的素數

def isPrimeNumber(self, num): 
    i = 2 
    while (i <= num/2): 
     if num % i == 0: 
      return False 
     i = i + 1 

    return True 

在此先感謝, 林

+2

你上哪兒去搜索?明顯的優化是使用'num'的平方根作爲極限(包括),並且跳過偶數不爲2的數字。 –

+0

@ReutSharabani,不知道AKS算法是否效率更高? https://en.wikipedia.org/wiki/AKS_primality_test,我找不到一個Python實現,讓我知道你是否有一個。 :) –

回答

1

這是提高性能。而循環出現,直到這個數字
你可以試試這個的square root

import math 
def isPrimeNumber(self, num): 
    for i in range(2, sqrt(num)): 
     if num % i == 0: 
      return False 

    return True 
+0

不確定AKS算法效率更高嗎? https://en.wikipedia.org/wiki/AKS_primality_test,我找不到一個Python實現,讓我知道你是否有一個。 :) –

1

一,你可以做你的代碼龐大且簡單的優化是當你到達num的平方根停止尋找除數。

+0

謝謝,不確定AKS算法是否效率更好? https://en.wikipedia.org/wiki/AKS_primality_test,我找不到一個Python實現,讓我知道你是否有一個。 :) –

相關問題