我刚开始学习Python编程。我正在尝试编写一些代码来回答这个Project Euler问题:
13195的质因数是5、7、13和29。
600851475143的最大质因数是多少?
我的程序可以处理测试用例13195,但当我尝试输入600851475143时,出现错误:"OverflowError:range() results has too many items"。有人知道如何修复吗?
这是我的代码:
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
任何帮助或建议将不胜感激!
x
,都有另一个因子y
,使得x*y = num
。如果x
是第 n 小的因子,则y
将是第 n 大的因子(证明留给读者作为练习)。找到最小的因子x
,然后执行y = num/x
。如果y
是质数,则它就是你要找的数字,否则继续执行。此外,可以证明x
比sqrt(num)
小,因此可以缩小range()
的范围。 - WhyNotHugo