求最大公约数问题
【题目描述】
给定两个正整数,求它们的最大公约数。
【输入】
输入一行,包含两个正整数(<1,000,000,000)。
【输出】
输出一个正整数,即这两个正整数的最大公约数。
【输入样例】
6 9
【输出样例】
3
依旧是递归;
求最大公约数,
有一个常用的办法,
叫欧几里得算法(也就是辗转相除法);
欧几里得算法(简称gcd),
gcd(a,b)=gcd(b,a mod b);
就是a和b的最大公约数=b和a mod b的最大公约数;
直到a mod b==0的时候,
b就是最大公约数。
1 #include<cstdio> 2 using namespace std; 3 int gcd(int,int); 4 int main() 5 { 6 int a,b; 7 scanf("%d%d",&a,&b); 8 printf("%d",gcd(a,b)); 9 return 0; 10 } 11 int gcd(int x,int y) 12 { 13 if(x%y==0) return y; 14 return gcd(y,x%y); 15 }
坚持打卡O(∩_∩)O~