c++求最小公倍数问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:32:39
#include <iostream.h>
void main (void)
{
int a,b;
cin>>a>>b;
for (int i=1;(i%a!=0)&&(i%b!=0);i++)
{
}
cout<<i<<endl;
}
错误在哪 谢谢
经典算法是什么啊

void main (void)
{
int a,b;
cin>>a>>b;
for (int i=1;(i%a!=0)||(i%b!=0);i++)
{
}
cout<<i<<endl;
}

&&改成||

#include <iostream>
using namespace std;
void main (void)
{
int a,b;
cin>>a>>b;
for (int i=1;i<=a*b;i++)
{
if (i%a==0&&i%b==0)
{
cout<<i<<endl;
break;
}
}
}

循环结束条件错了,是 !(i%a==0&&i%b==0),即楼上讲的(i%a!=0)||(i%b!=0).

经典的算法,我认为比较高效的是先求出两数的最大公约数c,最小公倍数就是a*b/c;

最大公约数的经典算法是欧几里德辗转相除法
int gcd(int a, int b)
{
int c =a%b;
while(c)
{
a=b;
b=c;
c=a%b;
}
return b;
}

#include <iostream>
using namespace std;
void main (void)
{
int a,b;
cin>>a>>b;
int i;
for (i=1;(i%a!=0)||(i%b!=0