# 按照从大到小的顺序寻找满足条件的自然数
i = n
while i >0:if m % i ==0and n % i ==0:# 输出满足条件的自然数并结束循环print("%d 和 %d 的最大公约数是: %d"%(m, n, i))break
i -=1
4.确定程序框架
程序的流程图如图所示。
5.完整的程序
根据上面的分析,编写程序如下:
# 最大公约数if __name__ =="__main__":print("请输入两个整数")
m =int(input("m = "))
n =int(input("n = "))print(f'输入的m={m},n={n}')if m < n:# 比较大小,使得m中存储大数,n中存储小数# 交换m和n的值
temp = m
m = n
n = temp
i = n # 按照从大到小的顺序寻找满足条件的自然数while i >0:if m % i ==0and n % i ==0:# 输出满足条件的自然数并结束循环print("%d 和 %d 的最大公约数是: %d"%(m, n, i))break
i -=1
请输入两个整数
输入的m=8,n=4
8 和 4 的最大公约数是: 4
第一种思路,按照从小到大的顺序穷举两数公约数的程序代码如下:
# 最大公约数if __name__ =="__main__":print("请输入两个整数")
m =int(input("m = "))
n =int(input("n = "))print(f'输入的m={m},n={n}')# 比较两个数的大小,进行交换if m < n:
temp = n
n = m
m = temp
for i inrange(1, n):if m % i ==0and n % i ==0:
k = i # 将当前情况下的最大公约数存储在k中print("%d 和 %d 的最大公约数是:%d"%(m, n, k))
# 最大公约数——辗转相除法if __name__ =="__main__":print("请输入两个整数")
m =int(input("m = "))# m存储较大数
n =int(input("n = "))# n存储较小数print("%d 和 %d 的最大公约数是: "%(m, n), end="")# 比较两个数的大小,进行交换,使得m是最大数,n是最小数if m < n:
temp = n
n = m
m = temp
b = m % n # b存储m 和 n取模得到的余数while b !=0:
m = n # 原来的小数作为下次运算时的大数
n = b # 将上一次的余数作为下次相除时的小数
b = m % n
print("%d"%n)