高精度最小公倍数

给出两个正整数a,b(1<=a,b<=10^100),求这两个数的最小公倍数。

格式
输入格式
仅一行,包含两个正整数a和b, 中间以一个空格隔开

输出格式
仅包含一行,为a和b的最小公倍数lcm(a,b)

样例1
样例输入1
123 321
样例输出1
13161
对于这个题目提交上去报错,我想不到还有什么其他做法来AC这道题,最后看了很多教程,发现,这里的数据已经超出整形数所能表示的范围了,即测试数据是高精度的.
换成高精度,那加减乘除可是要自己动手模拟。
下面是我最早提交两种不同的方法来解决这类问题,但是没有提交成功.
第三个代码是我百度的代码,在这里贴出来,希望代码的作者能够见谅。

#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a,long long b)
{
    if(a%b==0)
        return b;
    else
        return gcd(b,a%b);
}
int main()
{
    long long a,b;
    cin>>a>>b;
    int t = min(a,b),d=0,i;

    for(i=1;i<=t;++i)
    {
        if(a%i==0&&b%i==0)
        {
            d = i;
        }
    }
    cout<<(a*b)/d<<endl;
}
#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a,long long b){
   long long temp;
    if(b>a){
        temp=b;
        b=a;
        a=temp;
    }
    long long r=a%b;
    while(r!=0){
        a=b;
        b=r;
        r=a%b;
    }
    return b;

}
long long gcd2(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值