首页 > 解决方案 > 我做了这个素数计算器,它工作得很好,但对于大数字来说可以持续很长时间。我能做些什么来让它变得更好?(Python)

问题描述

#Prime factor calculator

num = int(input("Give me a number: "))
sqrt = int((num**(1/2))//1)
primfact = []

for i in range (1,sqrt+1): #This block wont work if num < 10.
    isqrt = int((i**(1/2))//1)

    for k in range (1,isqrt+1):
        if i % k != 0:
            if num % i == 0:
                num = num / i
                primfact.append(i)

if len(primfact) == 0: #Solves it for small num.
    for j in range (1,num+1):
        if num % j == 0:
            num = num / j
            primfact.append(j)


print("Prime factors for your number: ",primfact)

第一个块不适用于小 num(例如 num = 9),这就是我添加另一个 if 循环的原因。第一个块适用于大数字,但需要几分钟。

标签: python

解决方案


推荐阅读