Pythonでプロジェクトオイラーの問題3を解決しようとしています。
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
私のプログラムは非効率的で特大であることは知っていますが、なぜそれが機能しないのか知りたかっただけです。コードは次のとおりです。
def check(z):
# checks if the given integer is prime
for i in range(2, z):
if z % i == 0:
return False
break
i = i+1
return True
def primegen(y):
# generates a list of prime integers in the given range
tab = []
while y >= 2:
if check(y) == True:
tab.append(y)
i = i-1
def mainfuntion(x):
# main function; prints the largest prime factor of the given integer
primegen(x)
for i in range(len(tab)):
if x % tab[i] == 0:
print tab[i]
break
mainfuntion(600851475143)
そして、ここにエラーがあります:
for i in range(2, z):
OverflowError: range() result has too many items