GCD和LCM

本文无特殊说明,字母代表的都为整数

公约数定义

若d|a,d|b。则d为a和b的公约数
在d的集合中,最大的d称为最大公约数,表示为(a,b)或gcd(a,b),最大公约数为正整数

公倍数定义

若a|c且b|c,则c为a和b的公倍数
在c的集合中,最大的c称为最大公倍数,表示为[a,b]货lcm(a,b),最大公倍数为正整数

互质(互素)

若(a,b)=1,则a与b互质

公约数性质

由于下列性质很显然,在这里不给出证明

1.(±a±b)=(a,b)

2.(a,b)=(b,a)

3.(a,b+ax)=(a,b)

4.(a,0)=|a|

5.(a,ka)=|a|

6.(ma,mb)=m(a,b) (m>0)

7.(a,b)=d>0,则(a/d,b/d)=1

8.若b|ac且(b,c)=1,则b|a

裴蜀定理

当a,b不全为0,则有x,y,使ax+by=(a,b)
集合A={q|q=ax+by}中最小正元素为(a,b)

1.(a,b)=1,则ax+by=1

2.若m|a,m|b,则m|(a,b)。即a和b的任一公约数都是gcd(a,b)的一个约数。

公倍数性质

1.a,b的任一公倍数都是lcm(a,b)的倍数

2.(a,b)[a,b]=|ab|

玄学

更相减损术

(a,b)=(b-a,a)
(a,b,c)=(a,b-a,c-b)

欧几里得算法

(a,b)=(b,a%b)
用于写gcd:

inline int gcd(int a,int b){
    return b == 0 ? a : gcd(b,a % b);
}

虽然gcd一般使用欧几里得算法,但是在数据大的时候,即使用了高精度来存储数据时,鉴于高精度算法中模运算十分难写,往往用更相减损术

欧几里得算法二进制形态

1.若x=y,gcd(x,y)=x

2.若x,y为偶数,gcd(x,y)=2*gcd(x/2,y/2)

3.若x为偶数,y为奇数,gcd(x,y)=gcd(x/2,y)

4.若x,y为奇数,gcd(x,y)=gcd(x-y,y)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值