发布
社区首页 >问答首页 >减少分解代码的执行时间

减少分解代码的执行时间
EN

Stack Overflow用户
提问于 2020-01-29 07:55:59
回答 1查看 45关注 0票数 0

我正在尝试创建一个程序,用于一个数字的素数分解,这就是我想出的代码

代码语言:javascript
代码运行次数:0
复制
    ss=0
    i=2
    y=n
    q=""
    while(i<=int((y)**(1/2))):
    #checking for prime
        t=0
        for j in range(2,int(i//2)):
            if(i==2):
                continue
            if(i%j==0):
                t=t+1   
        if(t>0):
            i=i+1
            continue
        else:
            if(n==0):
                break
            else:
                if(n%i==0):
                    n=int(n/i)
                    ss=ss+1
                    continue
                elif(n%i!=0 and ss>0):
                    if(ss==1):
                        q=q+"("+str(i)+")"
                    else:
                        q=q+"("+str(i)+"**"+str(ss)+")"
                    ss=0
                    i=i+1
                    continue
                else:
                    i=i+1
                    continue
    return q

该代码在特定的数字范围内运行非常好,但显示了巨大数字上的超时错误。

有什么方法可以提高这些程序的效率,因为我自己已经尝试过了。

密码起作用-

  1. 检查外循环中的数是否为素数,如果它是素数,那么它将继续检查数与n的除法是否会产生0的余数,如果除以它,则除以它。
  2. 增量ss是在整个分解过程中使用素数的次数。
  3. ,如果它不能除数,ss (我可以除数的次数)超过0,那么我们将它添加到输出字符串

中。

输出的形式为(2 ** 3)(3 ** 2),以此类推。

EN

回答 1

Stack Overflow用户

发布于 2020-01-29 08:02:37

好吧,素因式分解是一个困难的和CPU密集型的问题,所以Python (是一种非常慢的语言)不是一种很好的语言。除此之外,假设您想继续使用python

  1. 您可以使用更好的因式分解算法,例如一个筛子,或者(如果您试图计算的数字具有特定的已知属性,并且其中一个是合适的)一个特殊用途的分解算法
  2. ,您可以使用像numba这样的临时的JIT,因为您的操作不依赖python语义

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59962654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档