最大公约数——欧几里得算法

版权声明:感谢阅读,欢迎批评指正。 https://blog.csdn.net/skyejy/article/details/89325671

把求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));
	}
}

猜你喜欢

转载自blog.csdn.net/skyejy/article/details/89325671