鱼C论坛

 找回密码
 立即注册
查看: 2361|回复: 0

[技术交流] 用python写的分解质因数的程序(对速度进行了一定的优化)

[复制链接]
发表于 2020-10-19 10:49:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自己写了一个用于分解质因数的程序,优化了一下速度,使16位以内的数的分解速度,限制在几百毫秒以内



import time as t

def prime_factorization(i):
    i = int(i)
    t1 = t.time()
    x = []
    y = []
    p = i
    j = 2
    heshu = False
    while i != 1.0 and j <= i:
        if i % j == 0:
            heshu = True
        if heshu == True and j > i ** 0.5:
            x.append(int(i))
            y.append(1)
            break
        
        if i % j != 0:
            j += 1
            if j > p ** 0.5 and heshu == False:
                print('\n\t您输入的数字是质数!', end='')
                break
            continue
            
        count = 0
        x.append(j)
        while i % j == 0:
                count += 1
                i /= j
                
        y.append(count)
        #print(i, i ** 0.5)

    if heshu == True:
        print('\n\t质因数分解: '+str(p)+' = ', end='')
        for m in range(len(y)):
            print(str(x[m])+'^'+str(y[m]), end='')
            if m < len(y) - 1:
                print(' * ', end='')
    t2 = t.time()
    deltat = round(t2 - t1, 3)
    print()
    print('\t跑完程序所花时间: '+str(deltat)+' 秒。\n')

while True:
    i = input('请输入要分解的正整数:')
    try:
        i = int(i)
    except ValueError:
        print('您输入的不是数,请重新输入!')
        continue
    if int(i) < 0:
        i *= -1
    prime_factorization(i)
        
    


运行结果见截图

iPad上的运行效果

iPad上的运行效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 07:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表