# 輾轉相除法求最大公約數
天峨ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
def gcd(a, b):
if a b:
a, b = b, a
while a % b != 0:
a, b = b, a % b
return b
gcd(21,49)
程序縮進如圖所示
圖中兩個函數等效,A 使用經典條件分支結構,B 使用條件表達式
代碼 A 和 B 等效
# A
def gcd(a, b):
if a == 0:
? return b
else:
? return gcd(b % a, a)
# B? ? ?
def gcd(a, b):
return b if a == 0 else gcd(b % a, a)
運行結果
最后的輸出語句已經限定了函數名是gcd
函數里的算法是求最大公約數的輾轉相除法。輾轉相除法是一個循環(huán)處理過程,所以第二個是while
同理,最后return的應該是n
def gcd(m,n):
r=m%n
while r:
m=n
n=r
r=m%n
else:
return n
python求最大公約數和最小公倍數
定義一個函數
def hcf(x, y):
該函數返回兩個數的最大公約數
# 獲取最小值
if x y:
smaller = y
else:
smaller = x
for i in range(1,smaller + 1):
if((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
# 用戶輸入兩個數字
num1 = int(input("輸入第一個數字: "))
num2 = int(input("輸入第二個數字: "))
print( num1,"和", num2,"的最大公約數為", hcf(num1, num2))
求兩個數的最小公倍數的算法有很多種,效率最高的一種是先計算出它們的最大公約數。
采用輾轉相除法,可以求出兩個正整數的最大公約數。先保存a和b的數值的副本,求出a÷b的余數,如果不等于零,就令a=b,b等于這一次的余數。
重復做上述的除法零,直到余數為0的時候,B的值就是一開始兩個數的最大公約數。這時初始的兩數乘積除以最大公約數就是兩個數的最小公倍數。