zl程序教程

您现在的位置是:首页 >  其它

当前栏目

求2个数的最大公约数

个数 最大公约数
2023-09-14 09:06:41 时间
  • 求两个数的最大公约数,例如求371,196两个数的最大公约数

第1步:定义两个变量a,b,假如变量a保存的值为371,变量b保存的值为196,先求出两个数的余数并保存在变量r中

  a=371;

 b=196;

r = a%b;或者r=b%a;

   371 %  196 = 1   余  175

   或者 196 % 371 = 0 余   196

第二步:使用while循环判断余数r的值是否不为0

while(r != 0)

{

}

第三步:除数b的值变成被除数a的值,余数r的值变成除数b的值,重新计算余数r的值

a = b;

b = r;

r=a%b;

第四步:最后除数b的值就是两个数的最大公约数的值

整个计算方法,写成函数如下

int greatestCommonMeasure(int a,int b)
{
	int r = a % b;  // 求出两个数的余数
	while( r != 0)  // 余数是否为0
	{
		a = b;     // 除数变成被除数
		b = r;     // 余数变成除数
		r = a % b;  // 重新计算两数的余数
	}
	return b;    //返回两个数的最大公约数
}

为什么不需要判断最大数,其实不需要,这里巧妙地进行规避了,假如上例中,先求出196%371的余数,商为0,余

数为196,在while循环中,除数371变成被除数了,余数r变成除数,这样就纠正成最大数和最小数的求余,所以不需要

对两个数进行最大最小判断后来求余