欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ACM 1175

程序员文章站 2022-03-03 11:35:00
...

题目描述 输入两个正整数,求其最小公倍数。
输入 输入以空格分隔的两个正整数。
输出 输出此两数的最小公倍数,末尾输出换行。
样例输入 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;
}

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

相关标签: ACM