解决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())