整除/同余/GCD/LCM

本文介绍了整除的概念及其在Python中的表示,区分了整除与小数除法,探讨了同余关系的性质以及如何利用这些性质解决问题。此外,文中详细解释了最大公因数(GCD)的求解方法,包括递归实现gcd函数,并提到了使用math模块计算多个数的最大公因数。最后,文章也提及了最小公倍数(lcm)的计算公式。
摘要由CSDN通过智能技术生成

整除

整除:一个数能被另一个数整除,即余数为0。a整除b,就是b%a=0,记为a|b
b被a长出说明b%a=0
python中的除法/默认是小数除法。
python中的整除符号为//
向下取整:a//b
向上取整:(a+b)//b,a//b+1
整除的性质:
- a|b,b|c=>a|c
- c|a,c|b=>c|(ma+nb)

同余

同余:余数相同
a%m=b%m
(a-b)%m=0=>m|(a-b)
a=km+b

同余的性质

  • 自反性:自己和自己同余
  • 对称性:a和b同余<=>b和a同余
  • 传递性:a和b同余,b和c同余=>a和c同余
  • 线性运算:如果a和b同余,c和d同余=>a±b和c±d同余

求解问题时如果需要对答案求余,只需要每次运算均保持求余(只要保证运算中不出现除法即可)。
即最终答案对mod求余和每次运算均求余答案一致。

最大公因数GCD

a和b的最大公因数就是同时整除a和b的最大整数,记为gcd(a,b)

如何求gcd?

假设a>b,a=bk+c。
设p=gcd(a,b),q=gcd(b,c)=>p|a,p|b,q|b,q|c
c=a-bk=>p|c=>p<=q
a=bk+c=>q|a=>q<=p
综上p=q
即gcd(a,b)=gcd(b,a%b)

def gcd(a,b):	
    if b==0:
        return a
    return gcd(b,a%b)   
print(gcd(15,10)) 

还可以直接从math模块里面导入,该函数还这次hi多个数字同时求最大公因数。

from math import *
print(gcd(12,18,24))

最小公倍数

假如求12和18的最小公倍数。
12和18的最大公因数是6.
最小公倍数应该是6*(12/6)(18/6)=36
总之,gcd(a,b)lcm(a,b)=ab
lcm(a,b)=a
b/gcd(a,b)

def lcm(a,b):
    return(a*b/gcd(a,b))
print(lcm(15,10)) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值