天天看點

python将一個正整數分解質因數

質數又稱為素數,要解決這個問題,我們首先要對輸入的數字進行判斷,判斷其本身是否為素數。

如果為素數則其因式隻有1與其本身。

def f3(n):#判斷一個數字是否為素數
    list1=[]#建立空清單用以盛放元素
    for i in range(2,n):#對範圍(2,n-1)依次取餘
        if n%i==0:#這時代表n并非是個素數
            list1.append(i)
    if len(list1) == 0:
        return True
    else:
        return False
           

建立好這個函數之後,我們開始整體代碼的編寫

def f3(n):#判斷一個數字是否為素數
    list1=[]
    for i in range(2,n):
        if n%i==0:
            list1.append(i)
    if len(list1) == 0:
        return True
    else:
        return False
def fundation(n):#定義主要函數
    l1 = []
    k=n
    if f3(n):#如果n是素數直接輸出結果
        print('{}=={}*1'.format(n, n))
    else:#n如果不是素數進行後續處理
        while True:#無限進行循環對n進行處理
            for i in range(2,k):#k==n,即判斷他除了1外的其他因子
                if n%i==0 and f3(i):#條件使i為n的一個因子,且是一個素數
                    l1.append(i)#将i添加進空清單備用
                    n=n//i#條件符合對n的值進行修改
            if f3(n):
                l1.append(n)
                break#處理至也為素數時跳出循環體,并将n添加進清單
    for j in range(len(l1)):
        print('{}*'.format(l1[0]),end='')
        l1.pop(0)#保證每次列印不同的元素
    else:
        print('1',end='')
    return ''#防止傳回空值
n=int(input('輸入一個數字:'))
print('{1}={0}'.format(n,fundation(n)))
           

這樣就實作了我們的目的,謝謝大家的閱覽