数论知识点整理

定义:
两个整数a、b,若它们除以整数m所得的余数相等,则称a与b对于模m同余或a同余于b模m
记作 a≡b (mod m)
读作 a同余于b模m,或读作a与b对模m同余。
例如 26≡2 (mod 12)
主要定理:
A*B % C = (A%C * B%C)%C
(A+B)%C = (A%C + B%C)%C

主要用处:
第一个大数求余。

在第二个式子中,就可以用到。

例如:
520%a = 500%a + 20%a +0%a;

我们就可以求出大数求余的结果了。

第二个A的B次幂,求模C的结果。

在第三个式子,就可以用到。

例如:
快速幂求此题。其中就是有一行代码 sum = (A%mod * sum%mod)%mod;

一是为了防止数据过大,爆了。超出long long 或者 long 或者 int 的边界而出错。

二是为了最后可以直接输出结果。

主要性质:
1 反身性 a≡a (mod m)
2 对称性 若a≡b(mod m),则b≡a (mod m)
3 传递性 若a≡b (mod m),b≡c (mod m),则a≡c (mod m)
4 同余式相加 若a≡b (mod m),c≡d(mod m),则a c≡b d (mod m)
5 同余式相乘 若a≡b (mod m),c≡d(mod m),则ac≡bd (mod m)
主要相关定理:
1 欧拉定理

2 费马小定理

3 中国剩余定理

4 幂运算

5 除法

辗转相除法

int gcd(int a,int b)
{
  if(b==0)
    {
        return a;
    }
  else
    return gcd(b,a%b);
}

扩展欧几里德算法是用来在已知a, b求解一组{x,y}
使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。

int exgcd(int a,int b,int & x,int &y)
{
    if(b==0)
    {
        x=1;
        y=0;
        return a;
    }
    int ans;
    ans=exgcd(b,a%b,x,y);
    int r;
    r=x;
    x=y;
    y=r-(a/b)*y;
    return ans;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值