C++--最大公约数和最小公倍数

通常用c++求a,b数的最小公倍数,需要先求出最大公约数,再用a*b=最大公约数*最小公倍数最终才能算出最小公倍数

我介绍一种直接求最小公倍数的办法,放在最后了

一,最大公约数

定义:如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。(不重要)

两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数核心思想

int Gongbeishu(int a, int b)
{
	int r;
	while (b > 0)
	{
		r = a % b;
		a = b;
		b = r;
	}
	return a;
}

两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数

例1:a=8,b=6    

8%6=2(%是取模,可理解成除法取余)

6%2=0(一直循环操作做,直到取得0,此时停止循环,2就是最大公倍数)

例2:a=5,b=3

5%3=2

3%2=1

2%1=01是最小公倍数)

解释:b对a取模,用得到的数再对b取模,只要得到的数不等于零,就一直重复,直到取模等于零,标红的数就是最大公约数

二,最小公倍数

定义:几个数共有的倍数叫做这几个数的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。

1.先介绍一个承接上文的方法

a*b=最大公约数*最小公倍数

算出了最大公约数,用a,b的乘积除以最大公约数,结果就是最小公倍数

2.介绍一种直接求出最小公倍数的方法(自己想的)

int gongbeishu(int a,int b)
{
	int n = 1;
	int temp = a * n;
	while ((temp % b) != 0)
	{
		n++;
		temp = a * n;
	}
	return temp;
}

要求a,b最小公倍数,我让a*1,看b能不能整除a*1,以此类推。

满足条件  ((a*n)%b)=0(n从1开始,每次循环加1,这样就可以找到最小公倍数了)

理解了就去实践,没理解的再理解理解,有问题问我哈

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值