# 5.16
# 用欧几里德算法求最大公约数
n1, n2 = 225, 2525
k = 1
# 此处按欧几里德公式给出
while n2 % (n1 * k) != n2:
# 此处单独将公式给与一个变量变量名位a
a = n2 % (n1 * k)
# 次数重新设置判断条件,即满足以下三个条件
if a % k == 0 and n2 % k == 0 and n1 % k == 0:
# 但结果是所有的公约数,和题目本身要求只要最大公约数的还有有差距
print(f"This is gcd {k}")
k += 1
现在不会出现一直运行了。结果出来了
又做了改良
# 5.16
# 用欧几里德算法求最大公约数
n1, n2 = 225, 2525
k = 1
# 在这里余数放到a变量里
a = n2 % (n1 * k)
# 此处按欧几里德公式进行变化即如果欧几里得公式不等于最大数则继续进行循环
while a + (n1 * k) != n2:
# 此处单独将公式给与一个变量变量名位a
a = n2 % (n1 * k)
# 次数重新设置判断条件,即满足以下三个条件
if a % k == 0 and n2 % k == 0 and n1 % k == 0:
# 但结果是所有的公约数,和题目本身要求只要最大公约数的还有有差距
print(f"This is gcd {k}")
k += 1
本来很开心,但是很快又发现还是一个没有终结的程序