python将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

方法一:用时最小,不过消耗内存

"""
5、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
"""
import time
import math

num = int(input("请输入一个正整数:"))
# 计算程序开始时间
start01 = time.time()
# 用来记录用户输入的数字
value = num
# 用来记录计算后得到的值
str01 = ""
i = 2
while True:
    if num % 2 == 0:
        num = num // 2
        str01 += ",2"
    elif num % 3 == 0:
        num = num // 3
        str01 += ",3"
    elif num % 5 == 0:
        num = num // 5
        str01 += ",5"
    elif num % 7 == 0:
        num = num // 7
        str01 += ",7"
    else:
        """
        在这里还可以在加入一个判断,用来解决不能控制的数
        """
        rangeEnd = int(math.sqrt(num)) + 1
        while i < rangeEnd:
            if num % i == 0:
                str02 = str(i)
                str01 += "," + str02
                num = num // i
            else:
                i += 1
        str04 = "," + str(num)
        str01 += str04
        break
if str01[0] == ',':
    str01 = str01.replace(",", "", 1)
    str01 = str01.replace(",", "*", )
else:
    str01 = str01.replace(",", "*")
print("%s = %s" % (value, str01))
end01 = time.time()
print("程序运行时间:%f" % (end01 - start01))

方法2:简单,耗时比较长

import math

start02 = time.time()
num = int(input("请输入要分解的数:"))
s = str(num) + "="
i = 2
while i <= num:
    if num % i == 0:
        if i == num:
            s = s + str(i)
        else:
            s = s + str(i) + "*"
        num = num // i
    else:
        i += 1
print(s)
end02 = time.time()
print("程序运行时间:%f" % (end02-end01))

方法3:

start02 = time.time()
num = int(input("请输入要分解的数:"))
print("%d = " % num, end="")
for i in range(2, int(math.sqrt(num) + 1)):
    while num % i == 0:
        print("%d * " %i, end="")
        num /= i
print("\b\b")  # 退格,把最后的一个删除掉。

end02 = time.time()
print("程序运行时间:%f" % (end02-end01))

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值