1. 程式人生 > >python將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。

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

方法一:用時最小,不過消耗記憶體

"""
5、將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
"""
import time
import math

num = int(input("請輸入一個正整數:"))
# 計算程式開始時間
start01 = time.time()
# 用來記錄使用者輸入的數字
value = num
# 用來記錄計算後得到的值
str01 = ""
i = 2
while True:
    if num % 2 == 0:
        num = num // 2
        str01 += ",2"
    elif num % 3 == 0:
        num = num // 3
        str01 += ",3"
    elif num % 5 == 0:
        num = num // 5
        str01 += ",5"
    elif num % 7 == 0:
        num = num // 7
        str01 += ",7"
    else:
        """
        在這裡還可以在加入一個判斷,用來解決不能控制的數
        """
        rangeEnd = int(math.sqrt(num)) + 1
        while i < rangeEnd:
            if num % i == 0:
                str02 = str(i)
                str01 += "," + str02
                num = num // i
            else:
                i += 1
        str04 = "," + str(num)
        str01 += str04
        break
if str01[0] == ',':
    str01 = str01.replace(",", "", 1)
    str01 = str01.replace(",", "*", )
else:
    str01 = str01.replace(",", "*")
print("%s = %s" % (value, str01))
end01 = time.time()
print("程式執行時間:%f" % (end01 - start01))

方法2:簡單,耗時比較長

import math

start02 = time.time()
num = int(input("請輸入要分解的數:"))
s = str(num) + "="
i = 2
while i <= num:
    if num % i == 0:
        if i == num:
            s = s + str(i)
        else:
            s = s + str(i) + "*"
        num = num // i
    else:
        i += 1
print(s)
end02 = time.time()
print("程式執行時間:%f" % (end02-end01))

方法3:

start02 = time.time()
num = int(input("請輸入要分解的數:"))
print("%d = " % num, end="")
for i in range(2, int(math.sqrt(num) + 1)):
    while num % i == 0:
        print("%d * " %i, end="")
        num /= i
print("\b\b")  # 退格,把最後的一個刪除掉。

end02 = time.time()
print("程式執行時間:%f" % (end02-end01))