把求a,b的最大公约数问题转换成了求a,a mod b的最大公约数问题。
1.递归解法
#include<stdio.h>
int gcd(int a,int b){
if(b==0) return a;
else return gcd(b,a%b);
}
int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",gcd(a,b));
}
}
2.非递归解法
#include<stdio.h>
int gcd(int a,int b){
while(b!=0){
int t=a%b;
a=b;
b=t;
}
return a;
}
int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",gcd(a,b));
}
}