提示:
欧几里得算法及其python实现
欧几里得算法python实现
基本思想
即辗转相除法。
可以求两个非负整数的最大公约数。
两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
示例:a=105,b=252求最大公约数
a | b | r=a mod b |
---|---|---|
105 | 252 | 105 |
252 | 105 | 42 |
105 | 42 | 21 |
42 | 21 | 2 |
42 | 21 | 0 |
21 | 0 |
欧几里得算法》要用大的整数除以小的整数,否则模除是没有意义的,第一步进行了调换。
伪代码:
初始条件:给定整数a,b;两者均大于等于零且不能同时为零
目标:求a,b最大公约数
1. 输入a,b
2. while b!=0
3. r = a mod b
4. a = b
5. b = r
6. 转2
7. 输出结果a
算法实现
def gcd(a,b):
# *************begin************#
if a<b:
t=a
a=b
b=t
while a%b!=0:
temp=a%b
a=b
b=temp
return b
# **************end*************#
a = int(input())
b = int(input())
r = gcd(a,b)
print(r)