ACM 1175

本文介绍了一种求两个正整数最小公倍数的算法,通过最大公约数的计算来得出结果,提供了两种实现方式:辗转相除法和辗转相减法,并附带了详细的C语言代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值