题目1049: 最大公约数

来源:互联网 发布:天猫购物券淘宝能用吗 编辑:程序博客网 时间:2024/06/03 05:08

题目描述

输入两个正整数,求其最大公约数。

 

输入

测试数据有多组,每组输入两个正整数。

 

输出

对于每组输入,请输出其最大公约数。

 

样例输入
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)最大公约数

原创粉丝点击