📅  最后修改于: 2023-12-03 15:07:34.012000             🧑  作者: Mango
这是一道来自ISRO CS 2013考试的编程题,需要编写一个程序来求出两个给定的数的最大公因数(GCD)。
编写程序,从标准输入中读取两个整数a和b,并打印它们的最大公因数(GCD)。
输入包括两个整数,分别为a和b。a和b的值范围为0到10的9次方之间的整数。
输出一个整数,为a和b的最大公因数(GCD)。
要求出两个数的最大公因数(GCD),可以使用辗转相除法(欧几里得算法),递归求解。
具体步骤如下:
判断a和b的值是否相等,如果相等,则它们的最大公因数就是a或b的值。
如果a和b不相等,则用a除以b,得到商q和余数r,即a = bq + r。
如果r等于0,则b就是a和b的最大公因数(GCD)。
如果r不等于0,则用b除以r,得到商q1和余数r1,即b = r q1 + r1。
重复第3、4步,直到余数r等于0。
最后一次余数不为0时,除数就是a和b的最大公因数(GCD)。
以下是python语言实现的代码:
def gcd(a, b):
if a == 0:
return b
elif b == 0:
return a
else:
if a > b:
return gcd(b, a % b)
else:
return gcd(a, b % a)
a, b = map(int, input().split())
print(gcd(a, b))
代码中,我们定义了一个求最大公因数的函数gcd,通过递归实现了辗转相除法来求解a和b的最大公因数(GCD)。
接着,我们从标准输入中读取两个整数a和b,使用map函数将其转换为整数类型,并传递给求最大公因数的函数gcd来得到a和b的最大公因数(GCD),并将其打印出来。