C++ 求a和b的最大公约数

参考链接:【C/C++】求最大公约数的三种方法

代码实现如下:

#include<iostream>
using namespace std;

int fun(int a,int b){//从最大往下递减,能整除的直接返回
	int res = -1,n = -1;
	if(a < b)
		n = a;
	else
		n = b;
		
	for(int i = n;i >= 1;i--)//注意1也是公约数 
		if(a%i==0 && b%i==0)
		{
			res = i;
			break;
		}
	return res;
}

int fun_2(int a,int b){//利用公式进行求解 
	int z = b;//注意z的初始值要赋为b,若一开始a%b == 0时需将b返回 
	while(a%b != 0)
	{
		z = a % b;
		a = b;
		b = z;
	}
	return z;
}

int main(){
	int a,b; 
	cin>>a>>b;
	cout<<fun(a,b)<<endl;
	cout<<fun_2(a,b)<<endl;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_29762941/article/details/80907024