求三個正整數的最大公約數和最小公倍數
阿新 • • 發佈:2019-01-27
題目:求兩個正整數的最大公約數和最小公倍數。
基本要求: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)