练习十四:分解质因数
分解质因数:把一个合数分解成若干个质因数的乘积形式,即求质因数的过程叫做分解质因数。
要求:将一个正整数分解质因数;例如:输入的数为90,分解为90=2*3*3*5
分析:
1、该数必须不是质数(不能被1和它本身除)
2、如果遇到n能被k整除的情况,则打印出k,同时用n除以k的商,作为新的正整数n,再重复第一步操作
3、如果n不能被k整除时,那么用k+1作为k的值,再来执行第一步操作
方法一:比较笨但是可以实现
1 a = int(input("请输入一个数字:")) 2 list1 = [] 3 for j in range(a): 4 for i in range(2,j): #除过1和它本身 5 if a % i == 0: 6 list1.append(i) 7 a = a//i #重新赋值给a 8 str1 = "".join('%s' %i for i in list1) #列表转换为str 9 print('输入的数字可被分解为:','*'.join(str1))
执行结果:
请输入一个数字:90 输入的数字可被分解为: 2*3*3*5
方法二:
1 n=int(input("请输入一个数字:")) 2 print('输入的数字可被分解为:',end='') 3 for i in range(2,n//2+1): 4 if n%i==0: 5 print(i,end ='*') 6 n = n//i 7 print(n)
执行结果:
请输入一个数字:90 输入的数字可被分解为:2*3*5*3
方法三:使用递归函数
1 def f(n): 2 n=int(n) 3 for i in range(2,int(n/2)+1): 4 if n%i==0: 5 print(i,end ='*') 6 return f(n/i) 7 print(n) 8 9 if __name__=="__main__": 10 f(90)
执行结果:
2*3*3*5