寒假培训——GCD(最大公约数),LCM(最小公倍数)

每个题目都有超链接,点击可以跳转到题目界面!!!

最大公约数和最小公倍数

1.c++自带__gcd(int m,int n)函数,可以用来求最大公约数;
2.最小公倍数=m*n/最大公约数;

在这里插入图片描述
另外两种求最大公约数的方法
M1.辗转相除法(欧几里得算法)

在这里插入图片描述
M2.辗转相减法(更相减损术)
在这里插入图片描述

又见GCD

纯暴力枚举就能做
在这里插入图片描述

多个数的最大公约数

在这里插入图片描述

多个数的最小公倍数

先求两个数的最大公约数,再根据这两个数的最大公约数求出这两个数的最小公倍数,再用求得的最小公倍数与另一个新数求最大公约数,再根据最大公约数求最小公倍数,以此类推……
在这里插入图片描述

LCM&GCD

假设gcd(a,b)=x,lcm(a,b)=y,则可得:gcdlcm=ab,即xy=ab,同除以x2,得y/x=(a/x)(b/x),令y1=y/x,a1=a/x,b1=b/x,则y1=a1b1,且a1∈[1,y1]。这样化简之后,再遍历[1,sqrt(y1)](只需遍历到 根号y1 即可)找满足gcd(a1,b1)==1的情况,更新答案。
注意特判a1*a1=y的情况,答案+1;其他情况答案+2。

注:
1.gcd(a,b)=x,lcm(a,b)=y可以推出ab=xy;但是反过来则不能推出;
2.最小公倍数一定是最大公约数的倍数;
3.gcd(a,b)成立的个数与gcd(a/x,b/x)的个数相等;
4.gcd(a,b)=x则gcd(ma,mb)=m*x;gcd(a/m,b/m)=x/m;

在这里插入图片描述

人见人爱gcd

在这里插入图片描述
在这里插入图片描述

高木同学的因子

先求两个数的最大公约数,再求最大公约数的所有因子,即为两个数的所有因子。
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值