最大公约数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
编写程序,输入两个正整数x和y,求它们的最大公约数。
-
输入
-
有多组测试数据,以EOF结束。
每组测试数据有2个整数x、y。
输出
- 每组数据输出一行。 样例输入
-
8,6
样例输出
-
2
来源
- 2012年C语言上机题 上传者
- ACM_丁国强
-
有多组测试数据,以EOF结束。
1、辗转相除法
用较大数除以较小数,再用较小数除以余数,再用上一个除法式子中的除数除以余数,
直到没有余数为止,最后一个除数就是最大公因数了。
#include<stdio.h>
int main()
{
int x,y,k;
while(scanf("%d,%d",&x,&y)!=EOF)
{
while(y!=0)
{
k=x%y;
x=y;
y=k;
}
printf("%d\n",x);
}
return 0;
}
2、更相减损术
#include<stdio.h>
int main()
{
int x,y,k;
while(scanf("%d,%d",&x,&y)!=EOF)
{
while(x!=0)
{
if(x>y)
{
k=x-y;
x=y;
y=k;
}
else
{
k=y-x;
y=x;
x=k;
}
}
printf("%d\n",y);
}
return 0;
}