下面提供三种算法:

首先,是暴力
代码如下:

#include <iostream>
using namespace std;

int main()
{
    int n,m,i;
    cin>>n>>m;
    i=max(n,m);
    while(1)
    {
        if(i%n==0&&i%m==0)break;
        i++;                //硬核自加
    }
    cout<<i<<endl;
}

其次是 n的x倍 (自己命名的啊哈哈)
代码如下:

#include <iostream>
using namespace std;

int main()
{
    int n,m,i;
    cin>>n>>m;
    if(n<m)
    {
        int temp=n;
        n=m;
        m=temp;
    }
    for(i=1;i<=m;i++)   //从1到m倍尝试
    {
        if((n*i)%m==0)break;  
    }
    cout<<n*i<<endl;
}

最后是利用最大公约数
代码如下:

#include <iostream>
using namespace std;

int gcd(int x,int y)  //求最大公约数
{
    if(x==y)return x;
    return gcd(y,x-y);
}

int main()
{
	int n,m;
	int y;
    cin>>n>>m;
    y=gcd(max(n,m),min(n,m));
    cout<<n*m/y<<endl;        //n和m的乘积除以最大公约数=最小公倍数
	return 0;
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐