把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。
Python练习题问题如下:
要求:将一个正整数分解质因数;例如您输入90,分解打印90=2*3*3*5。
Python解题思路分析:
这道题需要分三部分来分解,具体分解说明如下。
1、首先当这个质数恰等于n的情况下,则说明分解质因数的过程已经结束,打印出即可。
2、如果遇到n>=k,但n能被k整除的情况,则应打印出k的值。同时用n除以k的商作为新的正整数你n,之后再重复执行该步的操作直到符合1。
def reduceNum(n):
'''策略:求解n的因式分解,首先从2开始到n遍历,
如果n%某一个数的结果是整数,则打印出该数,同时n=n/该数
直到n==1结束
'''
a='{} = '.format(n)
#判断n是否为正整数
if not isinstance(n, int) or n <= 0 :
print ('请输入一个正确的数字 !')
exit(0)
#排除n的值为1 的特殊情况
elif n in [1] :
a+='{}'.format(n)
#n的值不为1的正整数
while n not in [1] : # 循环保证递归
for temp in range(2, n + 1) :
if n % temp == 0:#更改n的值,同时记录下它的因数并跳出for循环
n =int( n/temp)# n 等于 n/temp
if n == 1: #此时n的值大小和因数相同,作为末尾因数
a+=str(temp)
else : # index 一定是因数
a+='{} *'.format(temp)
break
print(a)
reduceNum(999)
reduceNum(90)
999 = 3 *3 *3 *37
90 = 2 *3 *3 *5