ACM 1175

题目描述 输入两个正整数,求其最小公倍数。
输入 输入以空格分隔的两个正整数。
输出 输出此两数的最小公倍数,末尾输出换行。
样例输入 14 24
样例输出 168

先了解最小公倍数等于两正整数除以最小公倍数;至于最小公倍数的求法我前几篇ACM的blog中都有,可以先翻翻
so easy,一起来看下代码把

/*
题目描述 输入两个正整数,求其最小公倍数。
输入  输入以空格分隔的两个正整数。
输出  输出此两数的最小公倍数,末尾输出换行。
样例输入  14 24
样例输出 168
*/

#include<stdio.h>
int main()
{
    int x,y,z,m,n;
    while(scanf("%d%d",&x,&y)!=EOF) //利用此语句来进行输出多行
    {
        m=x,n=y;                    //最初的x,y值,分别赋给m,n;
        while (y!=0)
        {
            z=x%y;
            x=y;
            y=z;
        }
        printf("%d\n",m*n/x);       //最小公倍数等于两正整数除以最大公约数
    }
    return 0;
}

还有另外一种解法,辗转相减法,也就是将两数反复相减,直至相等,这时相等的数则是两数的最大公约数,最小公倍数也就随之出来了


#include<stdio.h>
int main()
{
    int x,y,z,m,n;
    while(scanf("%d%d",&x,&y)!=EOF) //利用此语句来进行输出多行
    {
        m=x,n=y;                    //最初的x,y值,分别赋给m,n;
        while (x!=y)
        {
            if (x>y)
                x=x-y;
            else if(x<y)
                y=y-x;
        }
        printf("%d\n",m*n/x);       //x为最大公约数,最小公倍数等于两正整数除以最大公约数
    }
    return 0;
}

虽然看起来很简单,但是大家一定要多敲几遍,记住算法,了解语法,自己不看只看条件就能够立马敲出代码,这样才算真正掌握了这道题。

猜你喜欢

转载自blog.csdn.net/qq_42766201/article/details/83512551
ACM