# # 5.16
# 用欧几里德算法求最大公约数
n1, n2 = 225, 2525
k = 1
# 在这里余数放到a变量里
# 此处按欧几里德公式进行变化即如果欧几里得公式不等于最大数则继续进行循环
while n2 % (n1 * k) != n2:
# 此处单独将公式给与一个变量变量名位a
# a = n2 % (n1 * k)
# print(f"a is {a}")
# 次数重新设置判断条件,即满足以下三个条件
if n2 % k == 0 and n1 % k == 0:
# 但结果是所有的公约数,和题目本身要求只要最大公约数的还有有差距
print(f"This is gcd {k}")
k += 1
简化
n1, n2 = 225, 2525
k = 1
while n2 % (n1 * k) != n2:
if n2 % k == 0 and n1 % k == 0:
# 但结果是所有的公约数,和题目本身要求只要最大公约数的还有有差距
print(f"This is gcd {k}")
k += 1
其中 if n2 % k == 0 and n1 % k == 0: ,变成if n2% k == 0:效果一样。错在哪里?