今天在一个地方看见一个人求助计算公约数的变式题,最关键的是计算最大公约数。发现自己完全不知道如何计算,太失败了,看来学的还不扎实。下面总结python的公约数求解。
1.递归
例如,求(319,377):
∵ 319%377=0(余319)
∴(319,377)=(377,319);
∵ 377%319=1(余58)
∴(377,319)=(319,58);
∵ 319%58=5(余29)
∴ (319,58)=(58,29);
∵ 58%29=2(余0)
(58,29)= 29;
(319,377)=29。
def abc(x,y):
if x y:# ---当xy时,交换位置。
x,y = y,x
if x % y == 0:# ---当x对y取余时,等于0时,这时x=y
return y
else:
y = x%y
return abc(x,y)# --递归不断计算
print(abc(319, 377))
2.也算递归吧,不过更为简洁
def gcd(x,y):
return y if x%y == 0 else gcd(y,x%y)
print(gcd(319,377))
3.内置方法
import math
math.gcd(319,377)
>>>29
评论列表
已有0条评论