题目描述
输入两个整数a,b (1 <= a,b <= 100000000),请编写程序求出他们的最大公约数。
输入
第一个正整数n表示测试数据的个数,接下来的n行每行有两个整数a和b,空格隔开。
输出
输出n行,每行输出对应a,b的最大公约数。
样例输入 复制
3 12 8 25 10 21 63
样例输出 复制
4 5 21
#include<stdio.h>
//求取最大公约数
int max(int a,int b)
{
int c;
c=(a<b?a:b);
int cc;
int flag=0;
for(int i=c;i>=1;i--)
{
if(a%i==0&&b%i==0)
{
flag=1;
cc=i;
break;
}
}
return cc;
}
int main()
{
int a,b;
int n;
int cc;
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&a,&b);
cc=max(a,b);
printf("%d\n",cc);
}
}
第一遍没过的原因 在计算最大公约数时 最后取得是到2即结束
没有考虑到2 和1 这种没有的情况。