求两个数的最大共因数【乡村培育站暑期学习】

范例一:键盘上输入两个数,输出这两个数的最大公因数。

算法:两个数(a>b)的共因数肯定在较小数b的因数当中,较小数b的因数肯定在range(1, b+1)的序列当中,依次遍历range(1, b+1)序列所有的元素,如果都能被a和b除尽,说明该元素是a和b的公因数,将该元素插入到列表中,然后找出列表中的最大值,就是这两个数的最大公因数。

 1 a = int(input("第一个数:"))
 2 b = int(input("第二个数:"))
 3 my_list = []
 4 if a<b:
 5     b, a =a, b #交换两数
 6 for i in range(1, b+1):
 7     if (a%i ==0 and b%i ==0):
 8         my_list.append(i)
 9 max_n = max(my_list)
10 print(max_n)

输入:8 18

执行结果:2

 范例二:将定义函数求解两个数的最大公因数,调用函数输出结果。

 1 a = int(input("第一个数:"))
 2 b = int(input("第二个数:"))
 3 def gcb_m(a, b):
 4     my_list = []
 5     if a < b:
 6         b, a = a, b  # 交换两数两数的值
 7     for i in range(1, b + 1):
 8         if (a % i == 0 and b % i == 0):
 9             my_list.append(i)
10     max_m = max(my_list)
11     return max_m
12 def main():
13     print("{}和{}的最大公因数:{}".format(a, b, gcb_m(a, b)))
14 if __name__ == "__main__":       #判断程序执行名称
15     main()

输入:48 9

执行结果:3

范例三:键盘上输入两个数,输出这两个数的最大公因数(用辗转相除法)。

算法:两个数(a>b),(a, b) = (b, a%b)

1 a = int(input("第一个数:"))
2 b = int(input("第二个数:"))
3 if a<b:
4     b, a =a, b #交换两数值
5 while(a%b != 0):
6     t = a%b
7     a = b
8     b = t
9 print("最大公因数:", b)

输入:8 18

执行结果:2

范例四:将定义函数求解两个数的最大公因数,调用函数输出结果。(用辗转相除法)

 1 a = int(input("第一个数:"))
 2 b = int(input("第二个数:"))
 3 def gcb_m(a, b):
 4     if a<b:
 5         b, a =a, b #交换两数值
 6     while(a%b != 0):
 7         t = a%b
 8         a = b
 9         b = t
10     return b
11 def main():
12     print("{}和{}的最大公因数是:{}".format(a, b, gcb_m(a, b)))
13 if __name__ == "__main__":
14     main()

输入:48 9

执行结果:3

posted @ 2023-08-20 00:11  java帝国  阅读(23)  评论(0编辑  收藏  举报