题目:辗转相除求最大公约数、最小公倍数(两种实现方法)。
解决方案:
main(){
int gcd(int a,int b);
int max(int a,int b);
int min(int a,int b);
int a,b;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
printf("递归结果/n最大公约数是:%d/n",gcd(max(a,b),min(a,b)));
printf("最小公倍数是:%d/n",a*b/gcd(max(a,b),min(a,b)));
printf("非递归结果/n最大公约数是%d/n",gcd2(max(a,b),min(a,b)));
printf("最小公倍数是:%d/n",a*b/gcd(max(a,b),min(a,b)));
}
/*辗转相除--递归*/
int gcd(int a,int b){
if (b==0)
return a;
else
return gcd(b,a%b);
}
/*辗转相除--递归*/
int gcd2(int a,int b){
int temp;
while(b!=0){
temp=b;
b=a%b;
a=temp;
}
return a;
}
int max(int a,int b){
return a>=b?a:b;
}
int min(int a,int b){
return a<b?a:b;
}