题目1049: 最大公约数
2013-03-04 21:41
204 查看
题目描述
输入两个正整数,求其最大公约数。
输入
测试数据有多组,每组输入两个正整数。
输出
对于每组输入,请输出其最大公约数。
样例输入
样例输出
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
2011年哈尔滨工业大学计算机研究生机试真题
具体解析详见:编程之美读书笔记(5)最大公约数
输入两个正整数,求其最大公约数。
输入
测试数据有多组,每组输入两个正整数。
输出
对于每组输入,请输出其最大公约数。
样例输入
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; }
具体解析详见:编程之美读书笔记(5)最大公约数
相关文章推荐
- 【递归经典题目】欧几里得算法求最大公约数
- 47-题目1056:最大公约数
- 【九度OJ】题目1056:最大公约数 解题报告
- 题目1056:最大公约数
- 【程序16】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数
- 题目1056:最大公约数
- 华为编程大赛资格赛第4轮题目,求n个数的最大公约数
- NYOJ 题目569最大公约数之和(欧拉函数,数学)
- 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。(C语言)
- 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
- 题目1221: 最大公约数
- 题目1056:最大公约数
- 九度 题目1056:最大公约数
- 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
- 题目1056:最大公约数
- 题目1056:最大公约数
- 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
- 题目 1056 最大公约数 九度Online Judge
- 九度OJ—题目1056:最大公约数
- 题目47:最大公约数