输入两个整数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>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i,n,a,b;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d",&a,&b);
int r;
while(a%b!=0) {
r=a%b;
a=b;
b=r;
}
if(a%b==0) printf("%d\n",b);
}
return 0;
}
代码(递归)
#include <stdio.h>
#include <stdlib.h>
int gcd(int a,int b){
if(a%b==0) return b;
else return(b,a%b);
}
int main(int argc, char *argv[]) {
int i,n,a,b;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d",&a,&b);
printf("%d\n",gcd(a,b));
}
return 0;
}