代碼如下:
# 題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5
#程序注意:正數(shù)、負(fù)數(shù)、0三種的輸入和打印的不同;因子的求解;分解因數(shù)的打印
#方法一:利用列表append添加因數(shù)
num=int(input('請(qǐng)輸入一個(gè)整數(shù):'))
if num==0:
? ? #特殊處理 輸入0的情況
? ? print('該數(shù)為0,請(qǐng)重新輸入!')
? ? exit()
k=num
lst=[]
flag=0
if(num<0):
? ? #復(fù)數(shù)的處理
? ? flag=1
? ? num=abs(num)
n=num
for i in range(int(n/2)+1):
? ? #找出輸入數(shù)字的分解因子
? ? #range對(duì)象只能是正整數(shù),n/2可能產(chǎn)生小數(shù),且m/2是最大循環(huán)次數(shù)
? ? #循環(huán)次數(shù):n最大的因子是本身(質(zhì)數(shù)),最小的因子是2
? ? for j in range(2,n):
? ? ? ? if(num%j==0):
? ? ? ? ? ? lst.append(j)
? ? ? ? ? ? num=num//j
? ? ? ? ? ? break
if(len(lst)==0):
? ? #沒有因子的質(zhì)數(shù)判斷
? ? print('該數(shù)為質(zhì)數(shù),請(qǐng)重新輸入!')
? ? exit()
print('%d='%k,end='')
if flag==1:
? ? #負(fù)數(shù)打印需添加符號(hào)
? ? print('-1*',end='')
for k in range(len(lst)):
? ? #lst[]數(shù)列打印出來,最后一個(gè)數(shù)字需要有區(qū)分
? ? if k==len(lst)-1:
? ? ? ? print('%s'%lst[k])
? ? else:
? ? ? ? print('%s*'%lst[k],end='')