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之间的非质数的正整数分解

你可能感兴趣的:(python,python,算法)