需求:把合数分解成多个质数相乘
"""
功能:合数分解
作者:Fulling
日期:2021年11月28日
"""
num = int(input('输入一个数字:'))
decomposition = 0
# 判断是不是个合数
flag = 'prime_numbers'
for i in range(2, num):
if num % i == 0:
flag = False
break
if num == 1:
print('1 既不是素数,也不是合数')
elif flag:
print('%d是素数' % num, end=' ')
# 如果是合数才执行
else:
print('%d = ' % num, end="")
# 用列表记录这个合数内的所有素数
prime_numbers = []
for i in range(2, num + 1):
prime = 'prime_numbers'
for j in range(2, i):
if i % j == 0:
prime = False
break
if prime:
prime_numbers.append(i)
# 合数分解
while num not in prime_numbers:
for i in range(len(prime_numbers)):
if num % prime_numbers[i] == 0:
# 因子就等于列表里的这个数
factor = prime_numbers[i]
print('%d × ' % factor, end="")
# 分解数等于前一个数除以因子
num /= factor
break
# 输出最后的素数
print('%d' % num)
输出结果:
输入一个数字:1
1 既不是素数,也不是合数
输入一个数字:7
7是素数
输入一个数字:255
255 = 3 × 5 × 17