python正整数分解质因数,10行代码搞定, 低于线性时间复杂度O(n),并从小到大输出(python正整数分解质因数,python分解质因数)

python “随机整数分解质因子”写法

普通思路都是先求出1到该正整数区间内的质数,然后通过遍历循环的方式依次求解。但本文提供另一种思路,充分利用了质数的特性,代码复杂度低,时间复杂度低。代码如下:

aa = input("输入一个整数")
aa = int(aa)
b = 2     # 起始质数为最小质数
xx = []

while True:
    if aa % b != 0:
        b += 1
    else:
        aa = aa // b
        xx.append(b)
    if aa == 1:
        break
print(xx)
输入一个整数450
[2, 3, 3, 5, 5]			#输出

在这里插入图片描述
引用一下这位博主发布的“分解质因子”的文章,各位可以进行下对比–>这是个超链接

解释

这里利用了质数的特性,我总结的结果是:一个大于1的正整数,一定会比小于或等于该数的质数分解;且当该数被最小质数分解后,继续分解剩余的数,则剩余的数一定不会被分解过的质数再次分解;且被最小质数分解后的数,在遇到“下一个被分解的质数”之前,一定不会被非质数的正整除分解。

这里的“下一个被分解的质数”是指比上一个被分解的质数大且比下一个被分解的质数小的质数,如果是最后被分解的质数,则比上一个被分解的质数大即可;一定不会被非质数的正整数分解是指:一定不会被被分解的两个质数之间的任何非质数的正整数分解,举个例子:

假设需要分解的数是26,分解质因数的结果是(2, 13), 那么他一定不会被2-13之间的非质数的正整数分解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值