九度OJ 1056:最大公约数 (GCD)
- 题目描述:
-
输入两个正整数,求其最大公约数。
- 输入:
-
测试数据有多组,每组输入两个正整数。
- 输出:
-
对于每组输入,请输出其最大公约数。
- 样例输入:
-
49 14
- 样例输出:
-
7
思路:
在编程之美上见过,无非是两种方法,辗转相除法和相减法。
前一种比较常用,后一种更适合于两个大数比较相近的情况,比如说两个数分别是100000001和100000000。
代码:
#include <stdio.h> #include <string.h> int main(void) { int a, b; while (scanf("%d%d",&a, &b) != EOF) { while(a!=0 && b!=0) { if (a == b) { printf("%d\n", a); break; } else if(a > b) a = a-b; else b = b-a; } if (a == 0) printf("%d\n", b); if (b == 0) printf("%d\n", a); } return 0; } /************************************************************** Problem: 1056 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb ****************************************************************/
编程算法爱好者。