#每日一题 小乐乐与欧几里得

#每日一题
小乐乐与欧几里得

一、问题描述:

在这里插入图片描述
链接:添加链接描述

二、最佳解决方案(时间复杂度O(logN))

代码如下(示例):

#include<stdio.h>
int main()
{
    long long n,m;
    scanf("%lld %lld",&n,&m);
    long long ret=n*m;
    //确保m为较大数
    if(n>m)
    {
       long long tmp=m;
        m=n;
        n=tmp;
    }
    long long max;
    //最大公约数
    while(max=m%n)
    {
        m=n;
        n=max;
    }
    //最小公倍数
    m=ret/n;
    printf("%lld\n",n+m);
    return 0;
}

分析

核心知识:
1、mn=最大公约数最小公倍数
2、大数除以小数取余数(相当于模运算),直到余数为零时(也即模运算为零时)的除数(也即模数)就是最大公约数。
为了方便读者理解第二条知识在这里通过作图说明:
当m=20,n=15时.
错误点:1、在这里插入图片描述必须要写成max=m%n的形式,因为被除数不能为零,只有写成max=m%n的形式程序才能正常运行。
2、里面的数据类型要为long long,因为在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值