求两个数的最大共因数【乡村培育站暑期学习】
范例一:键盘上输入两个数,输出这两个数的最大公因数。
算法:两个数(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