python基礎題目編程16

題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

程序分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:

(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。

(2)如果n<>k,但n能被k整除,則應打印出k的值,並用n除以k的商,作爲新的正整數你n,重複執行第一步。

(3)如果n不能被k整除,則用k+1作爲k的值,重複執行第一步。

#_*_ ckdkng:utf-8 _*_
import math
num = int(input('請輸入一個正整數:'))
l = []
nu = num
k = 2
while 1:
    i = int(math.sqrt(num))
    while k <= i:
        if num % k == 0:
            break
        k += 1
    if k == num:
        l.append(str(num))
        break
    elif num % k == 0:
        l.append(str(k))
        num = int(num/k)
        k = 2
    else:
        k += 1
a = '*'
print('%d='% nu,end = '')
print(a.join(l))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章