解决python小题 ,分解质因数

问题

分解质因数只针对合数(非质数或者非素数,不包括1在内), 每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。

输入一个合数,将个因子升序输出。

解决:

思路:

模拟正常从小到大提取因子。比如20,提取因子首先提取2,目标值变为20/2=10;

再提取2,目标值变为10/2=5;3,4,不行跳过;提取5,目标值变为5/5=1。结束,

因子为[2,2,5].

 

因为质数的特殊,从小到大找被除数,只会遇到质数做被除数,因为合数都能写成几个质数相乘的形式。

所以这是能实现的比较简单的方法,算是偷懒了。。

代码:

num=int(input())
#初始化一个空列表
l=[]
#将输入的数备份
k=num
#从2开始循环求因子
for n in range(2,num):
    #循环提取出因子,直到不能在提取
    while int(k%n)==0:
        k=int(k/n)
        l.append(n)
    if k==1:
        #当提取完毕就退出循环
        break
print(l)
num=int(input())