C语言-求两个数的最大公约数和最小公倍数

C语言-求两个数的最大公约数和最小公倍数

一:先明白概念(公约数、最大公约数,公倍数、最小公倍数)
1.公约数:

公约数是指能够同时整除两个或多个数的数。具体来说,对于两个数a和b,如果一个数x能够同时整除a和b,那么x就是a和b的公约数。

举个例子,对于数812,它们的公约数有124。因为1可以整除任何数,2可以整除8128除以2等于412除以2等于6),4可以整除8128除以4等于212除以4等于3)。所以124都是812的公约数。

公约数有两个重要的性质:

1. 公约数一定能整除这些数的倍数。也就是说,如果一个数x是a和b的公约数,那么x也是a、b的倍数c的公约数。例如,对于510,它们的公约数有1510,而1510也是它们的倍数15的公约数。
2. 两个数的最大公约数是它们的所有公约数中最大的那个数。最大公约数用来表示两个数之间的最大公共因子。

公约数在数学中有很重要的应用,比如用于化简分数,求解线性方程等。

2.公倍数
最小公倍数=两数的乘积÷最大公约数

公倍数是指同时是两个或多个数的倍数的数。具体来说,对于两个数a和b,如果一个数x能够同时被a和b整除,那么x就是a和b的公倍数。

举个例子,对于数34,它们的公倍数有122436等。因为12可以同时被34整除(12除以3等于412除以4等于3),24也可以同时被34整除(24除以3等于824除以4等于6),36同样也可以同时被34整除(36除以3等于1236除以4等于9)。所以122436都是34的公倍数。

公倍数也有两个重要的性质:

1. 公倍数一定能被这些数的公约数整除。也就是说,如果一个数x是a和b的公倍数,那么x也能被a和b的公约数整除。例如,对于69,它们的公倍数有183654等,而183654能同时被69所共有的公约数3整除。
2. 两个数的最小公倍数是它们的所有公倍数中最小的那个数。最小公倍数用来表示两个数之间的最小公倍数差。

公倍数也在数学中有重要的应用,比如求解两个周期不同的事件同时发生的问题等。

二:举例子18和5的最大公约数通过辗转相除法

设两数为a和b(a>b),用a除以b,得a÷b=商…余数,
若余数为0 ,则最大公约数为b;
若余数不为0 ,则再用b÷余数,
得b÷余数=商1…余数1,若余数1=0,则最大公约数为余数,
若余数1不为0,继续让商÷余数n,一直到能够余数为零
这时的除数即最大公约数

好的,我们来详细进行辗转相除法来求解185的最大公约数。

首先,设18为a,5为b。
1.18除以5,得到商3和余数3。(18 ÷ 5 = 3 ... 32. 再用5除以3,得到商1和余数2。(5 ÷ 3 = 1 ... 23. 接着用3除以2,得到商1和余数1。(3 ÷ 2 = 1 ... 14. 最后,用2除以1,得到商2和余数0。(2 ÷ 1 = 2 ... 0)

当余数为0时,最后一次的除数就是185的最大公约数。所以,185的最大公约数是1。

通过以上过程,我们使用辗转相除法计算出了185的最大公约数为1

三:代码

#include<stdio.h>

	//计算最大公约数
	int gcd(int a,int b){
		if(b == 0)
			return a;
		else
			return gcd(b,a % b);
	}

	//计算最小公倍数
	int lcm(int a, int b){
		int gcd_result = gcd(a,b);
		return (a * b )/gcd_result;
	}
	
	int main()
{
	int num1,num2;
	printf("请输入两个整数:");
	scanf("%d %d",&num1,&num2);
	printf("最大公约数为:%d\n",gcd(num1,num2));
	printf("最小公倍数为:%d\n",lcm(num1,num2));
	return 0;
}

在这里插入图片描述
以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值