题目
输入两个整数 a 和 b,请你编写一个函数,int gcd(int a, int b), 计算并输出 a 和 b 的最大公约数。
输入格式
共一行,包含两个整数 a 和 b。
输出格式
共一行,包含一个整数,表示 a 和 b 的最大公约数。
数据范围
1≤a,b≤1000
输入样例:
12 16
输出样例:
4
解析
解法1:递归
思路
代码
usingnamespacestd; intgcd(inta, intb){ if(a%b==0) returnb; elsegcd(b,a%b); } intmain(){ inta,b; cin>>a>>b; cout<<gcd(a,b); return0; }
解法2:
1、暴力从1开始除以,能整除以即得到最大公因数
usingnamespacestd; intgcd(inta, intb){ intc=min(a,b); intd; for(inti=1;i<=c;i++){ if(a%i==0&&b%i==0){ d=i; } } returnd; } intmain(){ inta,b; cin>>a>>b; cout<<gcd(a,b); return0; }
2、从两者最小值开始除以,能整除即得到最大公因数
usingnamespacestd; intgcd(inta, intb){ intc=min(a,b); intd; for(inti=c;i>=0;i--){ if(a%i==0&&b%i==0){ d=i; break; } } returnd; } intmain(){ inta,b; cin>>a>>b; cout<<gcd(a,b); return0; }
❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!