总时间限制:
1000ms
内存限制:
65536kB
描述
给定两个正整数,求它们的最大公约数。
输入
有多组数据,每行为两个正整数,且不超过int可以表示的范围。
输出
行对应输出最大公约数。
样例输入
4 8 8 6 200 300
样例输出
4 2 100
提示
系统的测试文件中数据有很多组,因此同学们在程序里要写循环读取数据并判断是否读完文件的代码。
如果不知道如何处理,可以参考下面的两个模板:
C++这样写:
while(cin>>x>>y)
{
求x和y最大公约数的代码
}
C这样写:
while(scanf(%x %y",&x,&y)!=EOF)
{
求x和y最大公约数的代码
}
问题链接:Bailian3248 最大公约数
问题分析:(略)
程序说明:函数gcd()是欧几里得算法的递归程序实现。
题记:编程序不是要做到简洁,二是要做到极其简洁。
AC的C语言程序如下:
/* Bailian3248 最大公约数 */
#include <stdio.h>
int gcd(int m, int n)
{
return n ? gcd(n, m % n) : m;
}
int main(void)
{
int a, b;
while(~scanf("%d%d", &a, &b))
printf("%d\n", gcd(a, b));
return 0;
}