求两个数的最大公约数,最小公倍数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jkol12/article/details/51513699

题目描述

输入两个正整数m和n,求其最大公约数和最小公倍数。

输入

两个整数

输出

最大公约数,最小公倍数

解题思路

最大公约数(GCD)和最小公倍数(LCM)的计算方法可以在这里获取[这儿]
本文先用辗转相除法求出两个数的最大公约数,然后利用公式

LCM(a,b)=abGCD(a,b)

求出两个数的最小公倍数,下面是代码(C)

#include <stdio.h>

void swap(int *m, int *n)
{
    int temp;
    temp = *m;
    *m = *n;
    *n = temp;
}
int main()
{
    int a, b, l, gcd, lcm, m, n;
    while (scanf("%d%d", &a, &b) != EOF)
    {
        m = a, n = b;
        if (n > m)
            swap(&m, &n);
        l = n;
        while (l = m % n)
        {
            m = n;
            n = l;
        }
        gcd = n;
        lcm = (a * b) / gcd;
        printf("%d,%d\n", gcd, lcm);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/jkol12/article/details/51513699
今日推荐