当前位置:  开发笔记 > 编程语言 > 正文

尝试解决项目Euler时非常慢的python运行时间.不确定是否是python或慢速算法

如何解决《尝试解决项目Euler时非常慢的python运行时间.不确定是否是python或慢速算法》经验,为你挑选了1个好方法。

我试图解决的问题是问题87.这个问题需要你找到低于50000000的主要三元组.到目前为止,代码已经运行了超过10分钟,有足够的时间来写这个.

28 = 2 ^ 2 + 2 ^ 3 + 2 ^ 4

33 = 3 ^ 2 + 2 ^ 3 + 2 ^ 4

49 = 5 ^ 2 + 2 ^ 3 + 2 ^ 4

47 = 2 ^ 2 + 3 ^ 3 + 2 ^ 4

在我的暴力方法中,我已经优化它,只检查小于50000000的方形,立方体和夸脱值.我使用筛子生成高达7071的数字,这不需要很长时间.

def algo(primes_matrix):

    suma = []
    counter2 = 0;
    limit = 50000000

    # square max, primes_matrix[907][1] = 7041
    # cube max,  primes_matrix[72][2]   = 368
    # quart max, primes_matrix[22][3]   = 84

    for n2 in range(0, len(primes_matrix)-1):  # loop power 2
        for n3 in range(0, 72):        # loop power 3
            for n4 in range(0, 22):    # loop power 4

                add = primes_matrix[n2][1] + primes_matrix[n3][2]

                if(add

    add = primes_matrix [n2] [1] + primes_matrix [n3] [2]应该在for n4 ...循环之外,因为它的值不会改变并且你正在重新计算它.

    只要add已经大于限制,就打破循环而不是继续迭代.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有