C语言求最大公约数

最大公约数是两个或多个整数共有约数中最大的一个,换句话说,它是能同时整除这些数的最大的正整数。
一般来说,求最大公约数的最广泛的方法是:辗转相除法
辗转相除法:辗转相除法,也被称为欧几里得算法,该算法基于这样一个原理:两个整数的最大公约数等于其中较小的数和两数的差(或余数)的最大公约数。
该算法的具体操作如下:
1.将两个数中的较大数除以较小数,得到余数。
2.然后将较小数和上一步得到的余数作为新的两个数,重复上述步骤。
3.当余数为0时,停止计算,此时的除数就是两个数的最大公约数。

问题

输入两个数,求最大公约数

代码实现

int main() {
	int x = 0;
	int y = 0;
	
	scanf("%d%d", &x, &y);
	if (x < y) {//让大的数放在变量x中,小的数放在变量y中
		int type;
		type = y;
		y = x;
		x = type;
	}
	int z = x % y;//余数z
	while (z != 0) {
		x = y;
		y = z;
		z = x % y;
	}
	printf("%d\n", y);
	return 0;
}
}

C语言求最大公约数_第1张图片
C语言求最大公约数_第2张图片其实这里不设置交换两个数也许,因为如果x=18,y=24,那么z=18%24=18,执行x = y,y = z;的时候24重新赋值给x了,18重新赋值给y了。
代码如下:

int main() {
	int x = 0;
	int y = 0;
	
	scanf("%d%d", &x, &y);
	int z = x % y;//余数z
	while (z != 0) {
		x = y;
		y = z;
		z = x % y;
	}
	printf("%d\n", y);
	return 0;
}

C语言求最大公约数_第3张图片

/考研势在必行/

你可能感兴趣的:(C语言题目,c语言,开发语言,考研,算法,数据结构)