数论学习笔记整理 同余

概念

若有 (ab)|p ( a − b ) | p ,那么就说a和b在模p的意义下同余,即 ab(modp) a ≡ b ( m o d p )

性质

  1. 自反性;对称性;传递性。
  2. 同加性: ab(modp) a ≡ b ( m o d p ) ,则有 a+cb+c(modp) a + c ≡ b + c ( m o d p )
  3. 同乘性: ab(modp) a ≡ b ( m o d p ) ,则有 abbc(modp) a ∗ b ≡ b ∗ c ( m o d p )
  4. 同幂性: ab(modp) a ≡ b ( m o d p ) ,则有 acbc(modp) a c ≡ b c ( m o d p )
  5. 不满足同除性 ab(modp) a ≡ b ( m o d p ) ,却不满足 acbc(modp) a c ≡ b c ( m o d p ) ,但有 acbc(modpc) a c ≡ b c ( m o d p c )
  6. 推论1: ab%p=(a%p)(b%p)%p a ∗ b % p = ( a % p ) ∗ ( b % p ) % p
  7. 推论2:若有 a%p=x,a%q=x,gcd(p,q)=1 a % p = x , a % q = x , g c d ( p , q ) = 1 ,则有 a%(pq)=x a % ( p ∗ q ) = x
    证明:令 a=sp+x=tq+x a = s ∗ p + x = t ∗ q + x ,即 sp=tq s ∗ p = t ∗ q
    又因为 gcd(p,q)=1 g c d ( p , q ) = 1 ,那么 t|p t | p
    则有 s=tpq=kq s = t p ∗ q = k ∗ q ,即有 a=kpq+x a = k ∗ p ∗ q + x
    得证。

相关定理

威尔逊定理

若p为素数,则 (p1)!p1(modp) ( p − 1 ) ! ≡ p − 1 ( m o d p ) 。逆定理亦成立。
草率的伪证明:若p为素数,那么1到p-1都与p互质,此时这些数所组成的集合A,即为p的缩系
对于 p=2 p = 2 A=1 A = 1 11(mod2) 1 ≡ 1 ( m o d 2 )
对于其他任意质数,p均为奇数,那么p-1为偶数,集合A有偶数个,可以将A中的1与p-1配对,其他数字两两配对使得 AiAj1(modp) A i ∗ A j ≡ 1 ( m o d p )

费马小定理

若p为素数,a为正整数,a与p互质,则有 ap11(modp) a p − 1 ≡ 1 ( m o d p )

欧拉定理

若a与m互质,则有 aφ(m)1(modm) a φ ( m ) ≡ 1 ( m o d m )
欧拉函数φ(m),φ(m)表示不超过m的与m互质的数的个数。

扩展欧几里得算法

用于求解形似 ax+by=gcd(a,b) a x + b y = g c d ( a , b ) 的方程的一组解。

思想

由辗转相除法,可知gcd(a,b)=gcd(b,a%b)
当b=0时,可以得到 ax=a a x = a ,则此时有解

{x=1y=0 { x = 1 y = 0

将原方程转化即得:

ax+by=gcd(b,b%a) a x + b y = g c d ( b , b % a )

而其对应的同余方程为:
bx+(a%b)y=gcd(b,b%a) b x ′ + ( a % b ) y ′ = g c d ( b , b % a )

稍作联立,并将取模运算符展开:
ax+by=bx+(a%b)y=bx+(aabb)y=ay+b(xaby) a x + b y = b x ′ + ( a % b ) y ′ = b x ′ + ( a − ⌊ a b ⌋ b ) y ′ = a y ′ + b ( x ′ − ⌊ a b ⌋ y ′ )

到了这里,我们发现这个式子的最左边与最右边相等了,a,b两个参数又没有变,那么可得:
{xy=y=xaby { x = y ′ y = x ′ − ⌊ a b ⌋ y ′

模拟上述过程不断递归,直到b=0,就得到了一组解,再向上递归算出原来的x,y,由此得到通解。

代码

int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x=1;
        y=0;
        return a;
    }
    int t,res=exgcd(b,a%b,x,y);
    t=x;
    x=y;
    y=t-a/b*y;
    return res;
}

裴蜀定理

若a,b是整数,且 gcd(a,b)=d g c d ( a , b ) = d ,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使 ax+by=d a x + b y = d 成立。

推广:n个整数,a1,a2,a3……an为n个整数,d是它们的最大公约数,那么存在整数x1……xn使得 x1a1+x2a2+...xnan=d x 1 ∗ a 1 + x 2 ∗ a 2 + . . . x n ∗ a n = d

中国剩余定理

内容

若对于形似 xa1(modp1)xa2(modp2)xan(modpn) { x ≡ a 1 ( m o d p 1 ) x ≡ a 2 ( m o d p 2 ) … … x ≡ a n ( m o d p n ) 的方程组,模数p1至pn两两互质,那么对于任意整数ai,方程组有解,且可以构造出通解。

思想

求解满足方程的最小正整数解: x2(mod3)x3(mod5)x2(mod7) { x ≡ 2 ( m o d 3 ) x ≡ 3 ( m o d 5 ) x ≡ 2 ( m o d 7 )
先进行转化求下列同余方程组,模数与上式对应相同。
分别求其最小正整数解,如第一个式子可以转化为 57y1(mod3) 5 ∗ 7 y ≡ 1 ( m o d 3 ) ,易得 y=2 y = 2 ,那么x=70。

100=70010=21001=15 [ 1 0 0 ] = 70 [ 0 1 0 ] = 21 [ 0 0 1 ] = 15

最后利用构造法,由原式,可以得到
232=2100+3010+2001 [ 2 3 2 ] = 2 [ 1 0 0 ] + 3 [ 0 1 0 ] + 2 [ 0 0 1 ]

那么方程的最小正整数解就应该为 x=(270+321+215)%105=23 x = ( 2 ∗ 70 + 3 ∗ 21 + 2 ∗ 15 ) % 105 = 23
且方程的解集为 {23+105k|kZ} { 23 + 105 k | k ∈ Z }
够不够玄学

代码

int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x=1;
        y=0;
        return a;
    }
    int t,res=exgcd(b,a%b,x,y);
    t=x;
    x=y;
    y=t-a/b*y;
    return res;
}
int crt()
{
    int x,y,a,m,n;
    a=0;
    n=1;
    for(int i=0;i<k;i++)
      n*=w[i];
    for(int i=0;i<k;i++)
    {
        m=n/w[i];
        exgcd(w[i],m,x,y);
        a=(a+y*m*b[i])%n;
    }
    if(a>0)
      return a;
    return a+n;
}

逆元

对于a和x,如果它们满足 ax1(modp) a x ≡ 1 ( m o d p ) ,我们就说x的最小正整数解即为a在模p意义下的逆元,我们令它为 inv(a) i n v ( a )
由费马小定理我们可以知道 inv(a)=ap2%p i n v ( a ) = a p − 2 % p 即为a在模p意义下的逆元。
当然还有更好的求法,利用扩展欧几里得算法。首先 ax%p=1 a x % p = 1 ,那么就可以得到 ax+(k)p=1 a x + ( − k ) p = 1 ,又因为p是一个素数,显然可以转化为 ax+(k)p=gcd(x,p) a x + ( − k ) p = g c d ( x , p )

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值