C 语言经典题目系列解决方案(5)-gcd问题

来源:互联网 发布:便宜的跑步鞋推荐知乎 编辑:程序博客网 时间:2024/05/17 01:06

题目:辗转相除求最大公约数、最小公倍数(两种实现方法)。

解决方案:

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;}

原创粉丝点击