【问题标题】:Python: How to reduce computation time in python [duplicate]Python:如何减少python中的计算时间[重复]
【发布时间】:2018-05-15 12:26:54
【问题描述】:

我已经编写了以下代码来找到数字 600851475143 的最大素数,但计算时间过长。我可以做些什么来减少计算时间。谢谢!

def factor(n):
    answer = [] 
    for i in range(1,(n//2) + 1):
        if n%i == 0:
            print(i)
            answer.append(i)
    return answer        

def prime_factor(n):
    l = n[:]     
    for i in n:
        for j in range(2,i):
            if i%j == 0:
                l.remove(i)
                break
    return l  
print(prime_factor(factor(600851475143)))

【问题讨论】:

    标签: python-3.x time


    【解决方案1】:

    这段代码很快

    num = 600851475143
    factor = 2 
    while num > 1:
        while num % factor == 0:
            num = num//factor
        factor+=1
    
    print(factor - 1)
    

    取数字并开始反复除以整数(从 2 开始),直到不能。现在尝试下一个整数,然后是下一个,依此类推...... 最后一个factor 可以用来划分num 将是最大的素数。

    点击后非常明显。玩得开心解决问题:)

    【讨论】:

    • 哇哦!这是一个非常优雅的解决方案。谢谢!
    • 还有比这个更有效的方法。你可以做得更好。
    • 谢谢,我会坚持下去的。
    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2015-11-05
    • 2013-10-21
    • 1970-01-01
    相关资源
    最近更新 更多