同余定理 逆元 中国剩余定理 费马小定理
同余定理
同余定理是数论中的重要概念。给定一个正整数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),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:
- 找出三个数:从3和5的公倍数中找出被7除余1的最小数15,从3和7的公倍数中找出被5除余1 的最小数21,最后从5和7的公倍数中找出除3余1的最小数70。
- 用15乘以2(2为最终结果除以7的余数),用21乘以3(3为最终结果除以5的余数),同理,用70乘以2(2为最终结果除以3的余数),然后把三个乘积相加15∗2+21∗3+70∗2得到和233。
- 用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)
同余定理 逆元 中国剩余定理 费马小定理相关推荐
- 小结:数论四大定理(威尔逊定理+欧拉定理+中国剩余定理+费马小定理)
前置知识: 模运算消去律:ac ≡ bc (mod p) → a ≡ b (mod p/gcd(c,p) ) 威尔逊定理: 当且仅当p为素数时,( p -1 )! ≡ -1 ( mod p ) 当且仅 ...
- 数论四大定理(欧拉定理、费马小定理、中国剩余定理、威尔逊定理)
前置知识 同余 假设 a,ba,ba,b 都是整数,如果 nnn 是一个正整数,且存在整数 kkk 使得 a−b=k×na−b=k \times na−b=k×n,则称 a,ba,ba,b 模 nnn ...
- 取模除法(逆元)(费马小定理)(线性求逆元)
文章目录 引言 逆元 费马小定理 内容 应用 证明 线性求逆元 thanks for reading! 引言 我们做题时经常会由于答案过大,被要求使答案对一个质数取模 我们都知道,加和乘对取模是没有影 ...
- 7. 数论四大定理(威尔逊定理、欧拉定理、费马小定理、孙子定理)
一.准备工作 点击查看数论基础知识 二.威尔逊定理 威尔逊定理给出了判定一个自然数是否为素数的充分必要条件.但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大. 1. 定理及其变形 当且仅当p为素 ...
- 关于素数常用结论--威尔逊定理、欧拉定理、费马小定理、米勒罗宾算法
再需要判定的数比较大时,用枚举法肯定不行的,但目前数学界也没有任何一种又快又准确的判定素数的方法,并且也证明了素数不存在任何一种通项表达式.但作为初等数论中最大的一部分内容,数学家们对素数性质进行了大 ...
- 初等数论--同余--欧拉函数、欧拉定理、费马小定理
初等数论--同余--欧拉函数.欧拉定理.费马小定理 概念 同余类,既约同余类 欧拉函数 完全剩余系,既约剩余系 关于完全剩余系.既约剩余系一些比较简单的定理 欧拉定理.费马小定理 博主是初学初等数论( ...
- 计算系数(二项式定理逆元费马小定理)
给定一个多项式(ax+by)^k,请求出多项式展开后(x^n)*(y^m)项的系数. 输入格式 共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开. 输出格式 输出共 ...
- 费马小定理与素数判定
费马小定理是初等数论四大定理(威尔逊定理,欧拉定理(数论中的欧拉定理,即欧拉函数),中国剩余定理和费马小定理)之一,在初等数论中有着非常广泛和重要的应用.实际上,它是欧拉定理的一个特殊情况. 其内容为 ...
- c语言中余数恒等于1,费马小定理_KANGMANG201102_新浪博客
费马小定理是数论中的一个重要定理,其内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1 费马小 ...
最新文章
- js复制数据IE,FF..浏览器兼容
- go 发送http请求; Golang 解析JSON 篇
- html是大部分计算机都可以理解的语言,关于胃的静脉回流,哪项错误()。A、胃左静脉汇入门静脉或脾静脉B、胃右静脉汇入门静脉主干C、胃短...
- 2_less中的数值运算
- QT清空文件夹内所有文件
- 【EhCache】Java缓存框架使用EhCache结合Spring AOP
- android自定义矩形框,Android中ImageCropper矩形、圆形 裁剪框的实现方法
- Cannot change version of project facet Dynamic Web Module to 2.5解决方案
- H.264技术及原理
- 路由模块router实现step1
- 输出数组元素(c语言)
- 良心到难以置信的网站推(转自b站up主lks)
- CDR实例教程-高考789,敢拼就能赢!
- 服务器主板硬盘接口数量,主板上的硬盘插槽最多有几个?
- HOUR 11 Developing Advanced Pointers
- 【kubernetes/k8s源码分析】calico node felix源码分析之一
- JS数字区间比较大小的写法
- APICloud平台的融云2.0集成
- Mac查看OpenGL版本
- 从零开始手写VIO第三章作业(含关键点细节及思维过程)