重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
成都创新互联公司是一家集网站建设,五华企业网站建设,五华品牌网站建设,网站定制,五华网站建设报价,网络营销,网络优化,五华网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
void swap(int *m,int *n){
int t;
if(m n){
t = n;
n = m;
m = t;
}
}
int f(int m,int n){
if(m%n == 0)return n;
else
return f(n,m%n);
}
int main(){
int p = 0,m = 0,n = 0;
printf("请按照由大到小的顺序输入两个整数,用空格隔开:\n");
scanf("%d%d",m,n);
swap(m,n);
p = f(m,n);
printf("两个数的最大公约数是:%d\n",p);
return 0;
}
其实很简单 就是利用递归
中间存在个递归么 就是当第一个参数能被第二个参数整除 即代码中的b为零 3目运算就把第一个参数输出了 那么第二个参数就是最大公约数了
然后就是如果无法除尽 第一种情况 a〉b 公约数肯定是小于b的(小于即a%b模) 然后将(b,a%b)递归运算,就可以重复上述过程获得最大公约数
第二种 GCD(a,b)中ab就是将 a和b交换了位置递归 因为a%b肯定为a 所以就相当于 GCD(b,a)
#includestdio.h
int gcd(int a,int b)
{if(a%b==0)return b;
return gcd(b,a%b);
}
int main()
{int a,b;
scanf("%d%d",a,b);
printf("%d\n",gcd(a,b));
return 0;
}
#include stdio.h
int gcd(int m,int n) {
if(m*n==0)
return (m==0?n:m);
if(mn)
return gcd(m%n,n);
else if(mn)
return gcd(n%m,m);
}
int main(void) {
int m,n;
printf("请输入两个数:\n");
scanf("%d%d",m,n);
printf("其最大公约数为:\n");
printf("%d\n",gcd(m,n));
return 0;
}
运行结果