问题:
将一个整数分解质因数,例如输入90 输出 90 = 2*3*3*5
分析:
对num进行分解质因数,首先需要找出最小质数k,然后安装下列步骤完成:
1,如果这个质数刚好等于num,则说明这个数字的质因数分解结束,打印即可;
2,如果num > k,但num能被k整除,则打印k的值,并用num除以k的商作为新的正整数num, 重复执行第一步;
3,如果num不能被k整除,则以k+1作为k的新值,重复执行第一步。
第一种解决办法:
使用while循环加条件判断来按步骤完成
代码实现:
while True:
n = int(input('请输入一个整数:'))
print('%d = ' % n, end='')
while n > 1:
for i in range(2, n+1):
if n % i == 0:
n = int(n/i)
if n == 1:
print('%d' % i, end='')
else:
print('%d*' % i, end='')
break
print()
代码运行结果:
请输入一个整数:90
90 = 2*3*3*5
请输入一个整数:100
100 = 2*2*5*5
请输入一个整数:
第二种我们可以定义一个函数优化处理上面的解决办法:
代码实现:
def reduce_num(num):
print(f'{num} = ', end='')
if type(num) != int or num <= 0:
print('请输入一个正确的整数!')
elif num == 1:
print(f'{num}')
while num > 1:
for i in range(2, num + 1):
if num % i == 0:
num = int(num/i)
if num == 1:
print(i)
else:
print(f'{i} * ', end='')
break
reduce_num(90)
reduce_num(100)
reduce_num(50)
代码运行结果:
90 = 2 * 3 * 3 * 5
100 = 2 * 2 * 5 * 5
50 = 2 * 5 * 5