python將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
阿新 • • 發佈:2018-12-19
方法一:用時最小,不過消耗記憶體
""" 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))