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

📅  最后修改于: 2023-12-03 14:50:46.377000             🧑  作者: Mango

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

这是一个来自国际空间研究组织(ISRO)的编程问题,其编号为CS 2009,问题的具体描述如下:

有两个数x和y,找出它们的最大公约数(GCD)和最小公倍数(LCM)。

要解决这个问题,我们可以使用欧几里得算法来计算GCD。具体来说,若a和b是两个正整数,那么有:gcd(a, b) = gcd(b, a mod b)。这个定理对于计算x和y的GCD是非常有用的。

LCM可以根据GCD和下面的公式计算:lcm(x, y) = (x * y)/gcd(x,y)。

下面是一个Python程序,利用欧几里得算法来计算x和y的GCD和LCM。注意,这里我们使用了递归来实现欧几里得算法。

def gcd(x, y):
    """
    计算x和y的最大公约数(GCD)。
    """
    if y == 0:
        return x
    else:
        return gcd(y, x % y)

def lcm(x, y):
    """
    计算x和y的最小公倍数(LCM)。
    """
    return (x*y)//gcd(x,y)

# 测试代码
if __name__ == '__main__':
    x = 12
    y = 18
    print("x = ", x)
    print("y = ", y)
    print("GCD of x and y is: ", gcd(x,y))
    print("LCM of x and y is: ", lcm(x,y))

运行上面的程序,我们得到的输出如下:

x =  12
y =  18
GCD of x and y is:  6
LCM of x and y is:  36

在上面的程序中,我们首先定义了一个名为gcd的函数。如果y等于0,我们返回x作为结果。否则,我们递归调用gcd函数,将y和x模y的结果作为参数传递给它。这个函数实现了欧几里得算法来计算x和y的GCD。

我们还定义了一个名为lcm的函数,它利用gcd函数来计算x和y的LCM。

最后,我们编写了一些测试代码来测试我们的函数。我们传递x = 12和y = 18作为参数,并输出它们的GCD和LCM。这个程序看起来很简单,但它确实能够计算出x和y的GCD和LCM。