求最小公倍数的最佳算法

int main()
{ int a,b,r,m,n;
while(1)
{
cin>>a;
cin>>b;
if(a==0&&b==0)
break;
m=a;
n=b;
while(b!=0)
{
r=(a>b)?(a%b):a;
a=b;
b=r;
}
cout<<m*(n/a)<<endl;
}
return 0;
}
改进的有么?

#include<stdio.h>
#include<stdlib.h>

int gcd(int m,int n)
{
return n?gcd(n,m%n):m;
}

int main()
{
int num1,num2;
puts("请输入两个数");
scanf("%d %d",&num1,&num2);
int g=gcd(num1,num2);
printf("两个数的最大公约数是%d,\n最小公倍数是%d\n",g,num1*num2/g);
system("PAUSE");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-06
while(b!=0)里面不要每次都判断
在前面做一次判断就ok

其他算法可能要等数学家创造了

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网