1. 程式人生 > >求三個正整數的最大公約數和最小公倍數

求三個正整數的最大公約數和最小公倍數

題目:求兩個正整數的最大公約數和最小公倍數。
基本要求:1.程式風格良好(使用自定義註釋模板),兩種以上演算法解決最大公約數問題,提供友好的輸入輸出。
提高要求:1.三種以上演算法解決兩個正整數最大公約數問題。
2.求3個正整數的最大公約數和最小公倍數。

採用Python實現程式解決問題

#輸入a,b
a = int(input("Please enter a:"))
b = int(input("Please enter b:"))
c = int(input("Please enter c:"))

#演算法一:窮舉法求最大公約數
def one(a,b):
    if
a<b : min = a else: min = b i = min while i>0: if (a % i == 0) and (b % i == 0): return i else: i=i-1 #演算法二:輾轉相除法求最大公約數 def two(a,b): while b: r = a%b a = b b = r return a c2 = two(a,b) print("最大公約數2:%d "
%c2) #演算法三:輾轉相減法求最大公約數 def three(a,b): while a != b: if a > b: a = a-b else: b = b-a return b c3 = three(a,b) print("最大公約數3:%d "%c3) #求三個數的最大公約數,呼叫兩次求兩個數的最大公約數 def three1(a,b,c): m = one(a,b) n = one(m,c) return n c4 = three1(a,b,c) print("最大公約數4:%d "
%c4) #求兩個數的最小公倍數 #演算法一:窮舉法求最小公倍數 def minone(a,b): if a > b: max = a else: max = b while True: if max % a == 0 and max % b == 0: return max break max += 1 c5 = minone(a,b) print("最小公倍數1:%d "%c5) #演算法二:兩數之積除以兩數的最大公約數 def mintwo(a,b): m = one(a,b) n = a*b/m return n c6 = mintwo(a,b) #print("最小公倍數2:%d "%c6) def min(a,b,c): m = mintwo(a,b) n = mintwo(m,c) return n c7 = min(a,b,c) print("最小公倍數2:%d "%c7)