我工作的項目歐拉,問題3. 的問題是:尋找素數的<n
「的13195的首要因素是5,7,13和29什麼是最大的 600851475143的素數?「
在回答這個問題時,我打算先找到所有素數< x(反過來)。爲什麼下面的代碼看起來不起作用,我不確定它是邏輯運算符還是不正確的運算符。
#A function to find prime numbers under n
def find_prime(n):
for i in reversed(xrange(2, n)):
if (n % i) != 0:
print i
find_prime(n)
在測試中,我還建立了一個有趣的素數檢查器,所以我測試了一些。
def prime_checker(n):
if n > 2:
for i in range (2,n):
if (n % i) == 0:
print "%s is not a prime number" % (n)
break
else:
print "%s is a prime number" % (n)
誰能幫我明白我在做什麼毛病find_prime()函數之前我移動到,我將用它來解決問題的下一步是什麼?
你只是報告一個數字是素數,因爲它不能被一個數字整除。但它必須不能被任何**號碼整除。 – Barmar
糟糕 - 我在說「如果n不能被i分割,我打印」 – mutantChickenHer0
你不想找到所有小於N的素數。大多數th不會是N的因數。你想要找到'the最後一個檢查後的「下一個」主要因素(以2,3,5,7 ...開頭)。當你找到一個是N的因子(比如說P)時,你可以使用N1 = N/P來找到更多的因子,從而減少搜索的範圍。你的樣本數量有71,839,1471,6857因素。有超過5000萬的素數比1E9小,所以你的數字會有更多的因素比它小。但是找到僅僅8857的素數就足夠了。 –