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