對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:
成都創(chuàng)新互聯(lián)公司-成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站營(yíng)銷推廣,空間域名,虛擬主機(jī),網(wǎng)站改版維護(hù)有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請(qǐng)聯(lián)系成都創(chuàng)新互聯(lián)公司。
(1)如果這個(gè)質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。
(2)如果nk,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復(fù)執(zhí)行第一步。
(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
程序源代碼:
實(shí)例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def reduceNum(n):
print '{} = '.format(n),
if not isinstance(n, int) or n = 0 :
print '請(qǐng)輸入一個(gè)正確的數(shù)字 !'
exit(0)
elif n in [1] :
print '{}'.format(n)
while n not in [1] : # 循環(huán)保證遞歸
for index in xrange(2, n + 1) :
if n % index == 0:
n /= index # n 等于 n/index
if n == 1:
print index
else : # index 一定是素?cái)?shù)
print '{} *'.format(index),
break
reduceNum(90)
reduceNum(100)
以上實(shí)例輸出結(jié)果為:
90 = 2 * 3 * 3 * 5100 = 2 * 2 * 5 * 5
def?m(n):
ret?=?[]
while?n??1:
for?i?in?range(n-1):
k?=?i+2
if?n?%?k?==?0:
ret.append(k)
n?=?int(n?/?k)
break
print(ret)
m(20)就可以輸出20的因式分解了。
至于如何處理成^就比較簡(jiǎn)單了,可以用 Counter 自己處理下。
x=eval(input("請(qǐng)輸入小于1000的整數(shù):"))
k=2
print(x,"=",end="")
while x1:
if x%k==0:
? print(k,end="")
? x=x/k
? if x1:
? ? ? print("*",end="")
else:
? k=k+1