同余定理

同余定理是数论中的重要概念。给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)

两个整数a、b,若它们除以整数m所得的余数相等,则称a与b对模m同余或a同余于b模m

同余性质

  • 反身性:a≡a (mod m)
  • 对称性: 若a≡b(mod m),则b≡a(mod m)
  • 传递性: 若a≡b(mod m),b≡c(mod m),则a≡c(mod m)
  • 同余式相加:若a≡b(mod m),b≡c(mod m),则a ± c≡b ± d(mod m)
  • 同余式相乘:若a≡b(mod m),b≡c(mod m),则ac≡bd(mod m)
  • 线性运算:如果a≡b(mod m),c≡d(mod m),那么a ± c≡b ± d(mod m),且a * c≡b * d(mod m)
  • 除法:若ac ≡ bc (mod m) c≠0 则 a≡ b (mod m/gcd(c,m)) 其中gcd(c,m)表示c,m的最大公约数。特殊地 ,gcd(c,m)=1 则a ≡ b (mod m)
  • 幂运算:如果a ≡ b (mod m),那么a^n ≡ b^n (mod m)
  • 若a ≡ b (mod m),n|m,则 a ≡ b (mod n)
  • 若a ≡ b (mod mi) (i=1,2…n) 则 a ≡ b (mod [m1,m2,…mn]) 其中[m1,m2,…mn]表示m1,m2,…mn的最小公倍数

相关定理

  • 欧拉定理
  • 费马小定理
  • 中国剩余定理(孙子定理)

逆元

(a/b)%p=(a∗b的逆元)%p(a/b) \% p = (a * b的逆元) \% p (a/b)%p=(a∗b的逆元)%p

费马小定理求逆元:

b的逆元 = bp−2b^{p-2}bp−2

线性递推

#include<bits/stdc++.h>
#define N 3000010
typedef long long ll;
using namespace std;
int inv[N],n,p;
inline int read() {int f=1,x=0;char ch;do {ch=getchar();if(ch=='-')f=-1;} while(ch<'0'||ch>'9');do {x=x*10+ch-'0';ch=getchar();} while(ch>='0'&&ch<='9');return f*x;
}
int main() {n=read();p=read();inv[1]=1;puts("1");for(int i= 2; i <= n; i++) {inv[i] = (ll)(p - p / i) * inv[p % i] % p;printf("%d\n", inv[i]);}
}

中国剩余定理

在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:

  1. 找出三个数:从3和5的公倍数中找出被7除余1的最小数15,从3和7的公倍数中找出被5除余1 的最小数21,最后从5和7的公倍数中找出除3余1的最小数70。
  2. 用15乘以2(2为最终结果除以7的余数),用21乘以3(3为最终结果除以5的余数),同理,用70乘以2(2为最终结果除以3的余数),然后把三个乘积相加15∗2+21∗3+70∗2得到和233。
  3. 用233除以3,5,7三个数的最小公倍数105,得到余数23,即233%105=23,这个余数23就是符合条件的最小数。

就这么简单。我们在感叹神奇的同时不禁想知道古人是如何想到这个方法的,有什么基本的数学依据吗?

拓展

求解同余方程组

/*
https://www.luogu.com.cn/problem/P4777
*/ #include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long lt;lt read()
{lt f=1,x=0;char ss=getchar();while(ss<'0'||ss>'9'){if(ss=='-')f=-1;ss=getchar();}while(ss>='0'&&ss<='9'){x=x*10+ss-'0';ss=getchar();}return f*x;
}const int maxn=100010;
int n;
lt ai[maxn],bi[maxn];lt mul(lt a,lt b,lt mod) // 龟速乘
{lt res=0;while(b>0){if(b&1) res=(res+a)%mod;a=(a+a)%mod;b>>=1;}return res;
}lt exgcd(lt a,lt b,lt &x,lt &y)
{if(b==0){x=1;y=0;return a;}lt gcd=exgcd(b,a%b,x,y);lt tp=x;x=y; y=tp-a/b*y;return gcd;
}lt excrt()
{lt x,y,k;lt M=bi[1],ans=ai[1];//第一个方程的解特判 ans 为前k - 1 个方程组的通解 for(int i=2;i<=n;i++){lt a=M,b=bi[i],c=(ai[i]-ans%b+b)%b;//ax≡c(mod b)lt gcd=exgcd(a,b,x,y),bg=b/gcd;if(c%gcd!=0) return -1; //判断是否无解,然而这题其实不用x=mul(x, c/gcd, bg);ans+=x*M;//更新前k个方程组的答案M*=bg;//M为前k个m的lcmans=(ans%M+M)%M;}return (ans%M+M)%M;
}int main()
{n=read();for(int i=1;i<=n;++i)bi[i]=read(),ai[i]=read();printf("%lld",excrt());return 0;
}

欧拉定理

欧拉定理表明, 若n, a为正整数,且互素, 则
aψ(n)≡1(modn)a^{\psi(n)} \equiv 1(mod\,n) aψ(n)≡1(modn)

费马小定理降幂

使用前提:
p 是质数,且 gcd(a, p) = 1,那么 a^(p-1) ≡ 1 (mod p)
求(aN)mod(p)求(a^N)\,mod(p) 求(aN)mod(p)
ap−1≡1(modp)a^{p-1} \equiv1\,(mod\,p) ap−1≡1(modp)
k=N%(p−1)k=N\%(p-1) k=N%(p−1)
(aN)mod(p)=(ak)mod(p)(a^N)mod(p)=(a^k)mod(p) (aN)mod(p)=(ak)mod(p)

同余定理 逆元 中国剩余定理 费马小定理相关推荐

  1. 小结:数论四大定理(威尔逊定理+欧拉定理+中国剩余定理+费马小定理)

    前置知识: 模运算消去律:ac ≡ bc (mod p) → a ≡ b (mod p/gcd(c,p) ) 威尔逊定理: 当且仅当p为素数时,( p -1 )! ≡ -1 ( mod p ) 当且仅 ...

  2. 数论四大定理(欧拉定理、费马小定理、中国剩余定理、威尔逊定理)

    前置知识 同余 假设 a,ba,ba,b 都是整数,如果 nnn 是一个正整数,且存在整数 kkk 使得 a−b=k×na−b=k \times na−b=k×n,则称 a,ba,ba,b 模 nnn ...

  3. 取模除法(逆元)(费马小定理)(线性求逆元)

    文章目录 引言 逆元 费马小定理 内容 应用 证明 线性求逆元 thanks for reading! 引言 我们做题时经常会由于答案过大,被要求使答案对一个质数取模 我们都知道,加和乘对取模是没有影 ...

  4. 7. 数论四大定理(威尔逊定理、欧拉定理、费马小定理、孙子定理)

    一.准备工作 点击查看数论基础知识 二.威尔逊定理 威尔逊定理给出了判定一个自然数是否为素数的充分必要条件.但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大. 1. 定理及其变形 当且仅当p为素 ...

  5. 关于素数常用结论--威尔逊定理、欧拉定理、费马小定理、米勒罗宾算法

    再需要判定的数比较大时,用枚举法肯定不行的,但目前数学界也没有任何一种又快又准确的判定素数的方法,并且也证明了素数不存在任何一种通项表达式.但作为初等数论中最大的一部分内容,数学家们对素数性质进行了大 ...

  6. 初等数论--同余--欧拉函数、欧拉定理、费马小定理

    初等数论--同余--欧拉函数.欧拉定理.费马小定理 概念 同余类,既约同余类 欧拉函数 完全剩余系,既约剩余系 关于完全剩余系.既约剩余系一些比较简单的定理 欧拉定理.费马小定理 博主是初学初等数论( ...

  7. 计算系数(二项式定理逆元费马小定理)

    给定一个多项式(ax+by)^k,请求出多项式展开后(x^n)*(y^m)项的系数. 输入格式 共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开. 输出格式 输出共 ...

  8. 费马小定理与素数判定

    费马小定理是初等数论四大定理(威尔逊定理,欧拉定理(数论中的欧拉定理,即欧拉函数),中国剩余定理和费马小定理)之一,在初等数论中有着非常广泛和重要的应用.实际上,它是欧拉定理的一个特殊情况. 其内容为 ...

  9. c语言中余数恒等于1,费马小定理_KANGMANG201102_新浪博客

    费马小定理是数论中的一个重要定理,其内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1 费马小 ...

最新文章

  1. js复制数据IE,FF..浏览器兼容
  2. go 发送http请求; Golang 解析JSON 篇
  3. html是大部分计算机都可以理解的语言,关于胃的静脉回流,哪项错误()。A、胃左静脉汇入门静脉或脾静脉B、胃右静脉汇入门静脉主干C、胃短...
  4. 2_less中的数值运算
  5. QT清空文件夹内所有文件
  6. 【EhCache】Java缓存框架使用EhCache结合Spring AOP
  7. android自定义矩形框,Android中ImageCropper矩形、圆形 裁剪框的实现方法
  8. Cannot change version of project facet Dynamic Web Module to 2.5解决方案
  9. H.264技术及原理
  10. 路由模块router实现step1
  11. 输出数组元素(c语言)
  12. 良心到难以置信的网站推(转自b站up主lks)
  13. CDR实例教程-高考789,敢拼就能赢!
  14. 服务器主板硬盘接口数量,主板上的硬盘插槽最多有几个?
  15. HOUR 11 Developing Advanced Pointers
  16. 【kubernetes/k8s源码分析】calico node felix源码分析之一
  17. JS数字区间比较大小的写法
  18. APICloud平台的融云2.0集成
  19. Mac查看OpenGL版本
  20. 从零开始手写VIO第三章作业(含关键点细节及思维过程)

热门文章

  1. 深度学习常用工具-数据增强+绘图
  2. 使用matlab 2018b 图像处理工具箱批量处理操作
  3. x9此计算机上没有hasp_装mastercam2017说没有hasp
  4. Python 使用matplotlib画图添加标注、及移动坐标轴位置
  5. 35岁的程序员:第42章,复活
  6. 基于Nacos的注册中心与配置中心
  7. 查看网页加密密码超简单
  8. 360进程管理器原理
  9. Office对话框大全
  10. SQL Server 数据库管理员(DBA)的工作内容