我正在尝试欧拉计划问题3:600851475143的最大素数是多少?我的代码适用于随机的4位数字。但是我的代码只是不编译。现在已经15分钟了。
我认为这与“算法效率”有关。我即将加入计算机科学与工程学院的课程,所以我认为如果我练习Python编码将是一个好主意。我的代码效率不高吗?在继续学习之前,我现在应该学习CLRS吗?我已经完成了Python的基础知识(来自Udacity)。
#What is the largest prime factor of the number 600851475143 ?
factorlist=[]
def prime(num): #primetesterfunction
primecount=0
for factors in range(2,num):
if num%factors==0:
return False
else:
primecount+=1
if primecount==num-2:
return True
num=int(input("Enter Number: "))
for x in range(2,num+1):
if num%x==0 and prime(x)==True:
factorlist.append(x)
else:
continue
print("The largest prime factor of {} is {}".format(num,factorlist[-1]))
现在已经18分钟了,仍然没有结果...
答案 0 :(得分:0)
Python中没有 compilation 这样的东西;您可能是说执行。
花不到一秒钟的时间即可得到答案:
n = 600851475143
p = 2
while n > 1:
if n % p == 0:
while n % p == 0:
n /= p
largest = p
p += 1
print(largest) # 6857
因此您的代码要么效率极低,要么是完全错误的。