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");
}
#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
其他算法可能要等数学家创造了
在前面做一次判断就ok
其他算法可能要等数学家创造了