我剛開始學習使用Python編寫代碼。我嘗試寫一些代碼來回答這個項目歐拉問題:Python「OverflowError」
的13195的首要因素是5,7,13和29
號碼是多少600851475143的最大質因數?
我的程序與13195的測試用例一起工作,但是當我嘗試輸入600851475143時,出現錯誤:「OverflowError:range()結果有太多項目」 有誰知道我該如何解決這個問題?
這裏是我的代碼:
class Euler3:
"A class to find the largest prime factor of a given number"
n = 600851475143
primeFactors = []
for i in range(2,n):
if (n%i ==0):
primeFactors.append(i)
n = n/i
i = i -1 #reset i
print primeFactors
任何幫助或建議,將不勝感激!
你這樣做是錯誤的argest主要因素。對於每個因子'x',還有另一個因子'y',使得'x * y = num'。如果第x個最小因子中的「x」,「y」將是第n個最大因子(證明這是一個留給讀者的練習)。 找到最小因子'x',並做'y = num/x'。如果'y'是素數,那麼就是你的數字,如果不是,繼續。 另外,'x'可以比'sqrt(num)'更小,所以你可以縮小'range()'的範圍。 – WhyNotHugo