算法归总—短除法求最大公约数

短除法求最大公约数

上次讲到了如何用欧几里得算法求最大公约数,这次我们用另外一种方法来求,这种方法大家在以前应该也听说过,我在这里为大家演示一下步骤然后用代码来实现。欧几里得算法是不断地排除多余项,然后找到能够整除的一个数,短除法是不断地找两个数的最小公约数,直到找不到为止,然后把所有的最小公约数乘起来,就是最大公约数。
算法归总—短除法求最大公约数_第1张图片
注:此图为作者所画,不允许转载!

上图便是短除法求最大公约数的步骤,接下来附上实现代码:

#include
using namespace std;
int comment(int m,int n)
{
	int r = 1;
	for(int i = 2;i<=m&&i<=n;i++){
		while(m%i==0&&n%i==0){      //while 的用法是用来控制从最低的二开始判断的 
			r = r*i;
			m = m/r;
			n = n/r;
		}
	}
	return r;
}
int main()
{
	int m,n,t;
	cin>>m>>n;
	t = comment(m,n);
	cout<

亲测可以实现,欢迎大佬们提出意见……

你可能感兴趣的:(算法归总—短除法求最大公约数)