# 更相减损术求最大公约数defcomparative_subtraction(j, k):
count =0while k %2==0and j %2==0:
k, j, count =int(k /2),int(j /2), count +1whileTrue:if k == j:print("最大公约数为:{0}".format(2** count * k))return
kj =abs(k - j)if k > j:
k = kj
else:
j = kj
# 辗转相除法求最大公约数defdivision_by_rolling(j, k):whileTrue:if k > j:
j, k = k, j
r = j % k
if r ==0:print("最大公约数为:{0}".format(k))return
j = k
k = r
if __name__ =='__main__':import math
try:
a, b =map(int,input("请输入两个正整数,中间用空格分开\n").split())if a <=0or b <=0:print("输入错误!")
exit()
comparative_subtraction(a, b)
division_by_rolling(a, b)print("最大公约数为:{0}".format(math.gcd(a, b)))#使用内置函数gcdexcept ValueError:print("输入错误!")