花太多时间执行代码才能获得最大的素数

时间:2019-06-29 09:07:28

标签: python compilation

我正在尝试欧拉计划问题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分钟了,仍然没有结果...

1 个答案:

答案 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

因此您的代码要么效率极低,要么是完全错误的。