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;
}
}

在这里插入图片描述
在这里插入图片描述其实这里不设置交换两个数也许,因为如果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;
}

在这里插入图片描述

/考研势在必行/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值