辗转相除法(gcd) 是求两个正整数之最大公约数的算法。
具体做法:
① 两数相除求余数
② 除数继续除以余数
③ 直到余数为 0、0 ,此时的除数就是最大公因数
如求 323 和 247 的最大公因数:
323÷247=1……76
247÷76=3……19
76÷19=4
所以 323 和 247 的最大公因数是 19
函数封装
#include<iostream>
using namespace std;
int main(){
int a,b,c;//a被除数,b除数,c余数
cin>>a>>b;
while(a%b!=0){
c = a%b;//临时存余数
a = b;//除数作为新的被除数
b = c;//余数作为新的除数
}
cout<<b;
return 0;
}
以上是 辗转相除法 的循环写法,请你把它按照以下模板封装成函数。
#include<iostream>
using namespace std;
int gcd(int a,int b){
}
int main(){
int a,b;//a被除数,b除数
cin>>a>>b;
cout<<gcd(a,b);
return 0;
}
输入格式
一行,两个整数 a 和 b
输出格式
一行,一个整数
输入样例
12 18
输出样例
6
答案
#include<iostream>
using namespace std;
int gcd(int a,int b){
int c;
while(a%b!=0){
c=a%b;
a=b;
b=c;
}
return b;
}
int main(){
int x,y;
cin>>y>>x;
cout<<gcd(y,x);;
return 0;
}