最大公约数和最小公倍数的求取.C

辗转相除法,该方法是先将两个数的较大值除以较小值得到一个余数,如果余数等于0,则除数就是最大公约数,余数不等于0就用该除数除以当前的余数判断再次得到的余数等不等于0,等于0则作为除数的上一个余数就是最大公约数,不等于0则继续往后接着除,直到最后得到的余数等于0为止。

求最小公倍数可以直接套公式,如果A,B的最大公约数记为d,最小公倍数记为m,则m有d×m=A×B(推导过程比较复杂,程序员不必掌握,这里不再赘述)

废话不多说直接上代码:

int gcd(int A, int B)//求最大公约数
{
	if (B == 0) return A;
	else gcd(B, A%B);
}

int lcm(int m, int n, int d)//求最小公倍数
{
	return m * n / d;
}

int main()
{
	int m, n,d;
	printf("请输入两个正整数:");
	scanf("%d%d", &m, &n);
	if (m < n)
	{
		int temp = m;
		m = n;
		n = temp;
	}//必须保证m>=n
	d = gcd(m, n);
	printf("the greatest common divisor is:%d\n",d);
	printf("the least common multiple is:%d\n", lcm(m, n, d));
}

测试结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值