# 2021/8/2 ki
# 本次要求: 编写程序, 用户从键盘输入小于1000的整数, 对其进行因式分解.
# 数字范围可按要求修改
"""
思路分析:
1.输入与异常处理
2.因式分解与输出因数
3. 缝合
"""
# 输入与异常处理模块
def inex(x): # 判断输入和异常处理
try:
x = int(x)
except:
print('只能输入整数')
else:
if not 0 < x < 1000:
print('输入的数字不在规定范围之内')
else:
return x
# 因式分解与输出模块(直接输出)
def factor(n): # 判断因数并输出分解式_直接输出
if n == 1:
print(n)
else:
i = 2
while i <= n: # 若 i <= n 就进行分解, 直到分解到 i > n
if n%i == 0: # 如果能整除, 则分解出因数 i
n = n/i
print(i, end='')
if i <= n: # 如果未分解完, 就打印'*'号
print(' * ', end='')
else: # 如果不能整除, 则令 i + 1
i += 1
# 因数分解与输出模块(字符串列表输出)
def factor(y): # 判断因数并输出分解式_汇总到字符串列表输出
if y == 1:
print(y)
else:
result = []
i = 2
while i <= y: # 若 i <= n 就进行分解, 直到分解到不能分解
if y%i == 0: # 如果能整除, 则分解出因数 i 加入到列表当中
y = y / i
result.append(str(i))
else: # 如果不能整除, 则令 i + 1
i += 1
print(' * '.join(result))
# 集(缝)成(合)
# 缝合
n = input('请输入小于1000的正整数: ')
n = inex(n)
if type(n) == int:
print(n, '= ', end='')
factor(n)