输入两个正整数,求其最大公约数。
测试数据有多组,每组输入两个正整数。
对于每组输入,请输出其最大公约数。
49 14
7
*** 提示已隐藏,点击上方 [+] 可显示 ***
2011年哈尔滨工业大学计算机研究生机试真题
/********************************* * 日期:2013-3-4 * 作者:SJF0115 * 题号: 天勤OJ 题目1049: 最大公约数 * 来源:http://acmclub.com/problem.php?id=1049 * 结果:AC * 来源:2011年哈尔滨工业大学计算机研究生机试真题 * 总结: **********************************/ #include<stdio.h> int GCD(int a,int b) { //如果a < b if(a < b){ return GCD(b,a); } if(b == 0){ return a; } else{ return GCD(a - b,b); } } int main(){ int a,b; while(scanf("%d %d",&a,&b) != EOF){ printf("%d\n",GCD(a,b)); } return 0; }
/********************************* * 日期:2013-3-4 * 作者:SJF0115 * 题号: 天勤OJ 题目1049: 最大公约数 * 来源:http://acmclub.com/problem.php?id=1049 * 结果:AC * 来源:2011年哈尔滨工业大学计算机研究生机试真题 * 总结: **********************************/ #include<stdio.h> //递归形式 int GCD(int a,int b) { if(b == 0){ return a; } else{ //a,b和b,a%b有相同的最大公约数 return GCD(b,a%b); } } int main(){ int a,b; while(scanf("%d %d",&a,&b) != EOF){ printf("%d\n",GCD(a,b)); } return 0; }
/********************************* * 日期:2013-3-4 * 作者:SJF0115 * 题号: 天勤OJ 题目1049: 最大公约数 * 来源:http://acmclub.com/problem.php?id=1049 * 结果:AC * 来源:2011年哈尔滨工业大学计算机研究生机试真题 * 总结: **********************************/ #include<stdio.h> //判断奇偶性 int IsEvenOdd(int n){ if(n % 2 == 0){ return 1; } else{ return 0; } } int GCD(int a,int b) { //如果a < b if(a < b){ return GCD(b,a); } if(b == 0){ return a; } //若x,y都为偶数 if(IsEvenOdd(a) == 1 && IsEvenOdd(b) == 1){ return 2 * GCD(a>>1,b>>1); } //若x,y都为奇数 else if(IsEvenOdd(a) == 0 && IsEvenOdd(b) == 0){ return GCD(b,a-b); } //若x是偶数y是奇数 else if(IsEvenOdd(a) == 1 && IsEvenOdd(b) == 0){ return GCD(a>>1,b); } //若x是奇数y是偶数 else{ return GCD(a,b>>1); } } int main(){ int a,b; while(scanf("%d %d",&a,&b) != EOF){ printf("%d\n",GCD(a,b)); } return 0; }