📌  相关文章
📜  国际空间研究组织 | ISRO CS 2013 |问题 46(1)

📅  最后修改于: 2023-12-03 15:07:34.012000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2013 |问题 46

这是一道来自ISRO CS 2013考试的编程题,需要编写一个程序来求出两个给定的数的最大公因数(GCD)。

题目描述

编写程序,从标准输入中读取两个整数a和b,并打印它们的最大公因数(GCD)。

输入格式

输入包括两个整数,分别为a和b。a和b的值范围为0到10的9次方之间的整数。

输出格式

输出一个整数,为a和b的最大公因数(GCD)。

解题思路

要求出两个数的最大公因数(GCD),可以使用辗转相除法(欧几里得算法),递归求解。

具体步骤如下:

  1. 判断a和b的值是否相等,如果相等,则它们的最大公因数就是a或b的值。

  2. 如果a和b不相等,则用a除以b,得到商q和余数r,即a = bq + r。

  3. 如果r等于0,则b就是a和b的最大公因数(GCD)。

  4. 如果r不等于0,则用b除以r,得到商q1和余数r1,即b = r q1 + r1。

  5. 重复第3、4步,直到余数r等于0。

  6. 最后一次余数不为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),并将其打印出来。