时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2360
解决:1444
-
题目描述:
-
输入两个正整数,求其最大公约数。
-
输入:
-
测试数据有多组,每组输入两个正整数。
-
输出:
-
对于每组输入,请输出其最大公约数。
-
样例输入:
-
49 14
-
样例输出:
-
7
-
答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问: http://t.jobdu.com/thread-7780-1-1.html
普通算法
#include<stdio.h>
#define MIN(a,b) (a)<(b)?(a):(b)
int main()
{
int m,n;
while(scanf("%d %d",&m,&n) != EOF)
{
//getchar();
int i,min,gys;
min = MIN(m,n);
for(i = 1; i <= min; i++)
{
if((m%i == 0) && (n%i == 0))
{
gys = i;
printf("%d\n",gys);
}
}
printf("%d\n",gys);
}
}
欧几里得算法
#include<stdio.h>
#define MIN(a,b) (a)<(b)?(a):(b)
int main()
{
int m,n;
while(scanf("%d %d",&m,&n) != EOF)
{
int i,min,temp;
min = MIN(m,n);
while(n > 0)
{
temp = m % n;
m = n;
n = temp;
}
printf("%d\n",m);
}
return 0;
}