求两个数的最大公约数

 

题目:求两个数的最大公约数

分析:

方法(1):辗转相除法

int gcb2(int m, int n)
{
	int left = 0;
	while (n)
	{
		left = m % n;
		m = n;
		n = left;
	}
	return m;//n等于0时,即m%n等于0,最大公约数是n,即m(里面赋值了)
}

方法(2):辗转相减法

int gcb3(int m, int n)
{
	while (m != n)
	{
		if (m > n)
		{
			m = m - n;
		}
		else
		{
			n = n - m;
		}
	}
	return m;
}

方法(3):枚举法(从最大的因子开始逐渐减1的试除法)

int gcb1(int m, int n)
{
	int big = m;
	int small = n;
	if (n > m)
	{
		big = n;
		small = m;
	}

	//big大,small小
	for (int i = small; i > 0; i--)
	{
		if (m%i == 0 && n%i == 0)
		{
			return i;
		}
	}
}

 

上一篇:web前端入门到实战:html转义特殊字符代码大全


下一篇:sql语句五不要