您的位置:首页 > 其它

数论知识点整理

2019-05-03 17:03 78 查看

定义:
两个整数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(解一定存在,根 4000 据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: