一次同余方程组和孙子定理
初等数论教案

厦门大学教案学年度第学期院(系)数学科学学院任课教师祝辉林课程名称初等数论授课章节:第4.3节一次同余方程组和孙子定理授课教材:《初等数论》,北京大学出版社授课对象:数学类专业一年级本科生【教学要求】1. 了解孙子定理的历史背景和起源出处,理解用孙子定理求解一次同余方程组的思想方法和公式,掌握求解一次同余方程组的计算步骤;2. 掌握一次同余方程组的模两两不互素时,应当如何转化成模两两互素时的等价一次同余方程组,再用孙子定理求解;3. 理解一次同余方程组的意义,并能用孙子定理的方法解决一些实际应用问题。
【教学重点】1. 孙子定理的思想方法和计算步骤;2. 如何应用孙子定理解决实际应用问题。
【教学难点】理解孙子定理的思想方法。
【教学内容】第三节一次同余方程组和孙子定理本节主要讨论一次同余方程组的解法。
为了解决这类同余方程组,我们需要弄清楚剩余系的结构。
孙子定理(又称中国剩余定理)就是解决这类实际问题的有力工具。
一、“物不知其数”问题及其解法1.1问题的提出例1:(“物不知其数”问题)大约在公元四世纪,我国南北朝时期有一部著名的算术著作《孙子算经》,其中就有一个“物不知其数”问题:“今有物,不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?答曰:二十三”。
1.2 问题的解法及理由明朝程大位编著的《算法统宗》里记载了此题的解法,他是用一首歌谣叙述出来的:三人同行七十稀,五树梅花廿一枝。
七子团圆正月半,除百零五便得知。
这首诗翻译成数学算式就是:702213152233⨯+⨯+⨯=,233105223-⨯=。
解题步骤及理由如下:(1)先在5和7的公倍数中找除以3余1的数,进而找到除3余2的数。
因为[5,7]35=,35311÷=(余2),(352)323⨯÷=(余1),而(702)346⨯÷=(余2),所以140符合条件。
(2)在3和7的公倍数中找除以5余1的数,进而找到除5余3的数。
【中国剩余定理-入门】-C++

【中国剩余定理-⼊门】-C++中国剩余定理也称孙⼦定理,是中国古代求解⼀次同余式组(见同余)的⽅法。
是数论中⼀个重要定理。
这玩意在luogu 居然有模板题:先来看⼀个问题:在《孙⼦算经》中有这样⼀个问题:“今有物不知其数,三三数之剩⼆(除以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。
这个余数23就是符合条件的最⼩数。
不得不佩服古⼈的智慧然后看回题⽬(链接在开头)(n −a 1)|b 1(n −a 2)|b 2...(n −a k )|b k变形成同余⽅程组之后:(n −a 1≡0)(mod b 1)(n −a 2≡0)(mod b 2)...(n −a k ≡0)(mod b k )很明显的,如果a ≡b (mod m ),则a +c ≡b +c (mod m )成⽴。
这个不难理解,稍微理解⼀下就可以了。
然后把上⾯同余⽅程组变形⼀下:n ≡a 1(mod b 1)n ≡a 2(mod b 2)...n ≡a k (mod b k )然后到这⾥就是中国剩余定理的裸题了。
但是需要注意的是因为题⽬问题,我们需要对每⼀个a i 作这样的操作:a [i ]=(a [i ]mod b [i ]+b [i ])modb [i ];然后还需要注意的就是,这道题⽬因为数据良(bian)⼼(tai),所以还需要⽤快速乘来防⽌爆long long 的情况。
一次同余方程组和孙子定理

m1 24
m2 32
4 2 2 mm 1m 2m 3 2 3 5 3600
m3 52
M1 32 52 225
M11 1
M1M11 225
M 2 24 52 400
M 21 2
M 2 M 21 800
M3 24 32 144
j j
M j M j 1(mod mj ) , (1 j k ) 。
1
证明:由于 m , , m
1
1 k
k
两两互素,所以 m [m1, , mk ] m1 mk 。
1 2 j
若一次同余方程组有解 c1 , c2 ,则 c1 c2 (modm) 。因为 m , , m 两两互素, c c (modm ),1 j k ,这就证明了同余 方程若有解,则解数为1。 显然 (m , M
三、孙子定理的应用
孙子定理是数论中最重要的基本定理之一, 它实质上刻画了剩余系的结构.它的应用是非常 广泛的,在数学计算、保密通讯、测距和日常生 活中通常会用到。 陈景润《初等数论I》中有下列趣味问题: 甲、乙两港的距离不超过5000公里, 今有三只轮船于某天零时同时从甲港开往乙港。 假定三只轮船每天24小时都是匀速航行,
此处 m1 24 , m2 32 , m3 52 ,
a1 4, a2 6, a3 0,
M1 32 52 225, M2 24 52 400, M3 24 32 144, m 24 32 52 3600.
由于 225M11 1(mod 24 ), M11 1(mod 24 ), 所以取 M11 1. 由 400M 1(mod3 ), 4M 1(mod3 ), M 2(mod3 ),
高中数学人教版选修46 同余与同余方程 五 拉格朗日插值和孙子定理 课件

感谢观看,欢迎指导!
x≡e(moda), x≡f(modb),仅有一解: x≡g(modc) x≡ebcc1+facc2+gabc3(modabc),其中c1, c2,c3分别满足同余式:bcc1≡1(moda) acc2 ≡1(modb),abc3 ≡1(moda)的整数.
课堂小结
一、一次同余式组: x≡e(moda)
设a,b,c两两不同那么满足f(a)=e,f(b)=f , f
(c)=g的一个多项式可用
f(x)=e·p(x)+f ·q(x)+ g ·r(x) (Ⅰ)
其
中
p(x)
x a
bx ba
c c
,
q(x)
x b
a a
x b
c c
, r(x)
x c
a a
x c
( b Ⅱ)
b
上面的公式(Ⅰ)和(Ⅱ)叫做拉格朗日公式. 用类似方法解决孙子算经的物不知其数问题. 1)求整数p,使p≡1(mod3), p ≡0(mod5), p≡0(mod7).
证明:
因为 yn+1 - xn+1 = f(yn ) - f(xn )
yn - xn
yn - xn
由拉格朗日中值定理知: 总存在 (xn使, y得n )
由于 又 yn+1 - xn+1 = f'(ξ)
yn - xn
当
(
xn
,
yn
)
[0,
1] 2
f '(x故) 得3x2证 2x 1
2
1
1
x [0, ],[ f 2
过程与方法
1.先阅读案例,探究解决问题的算法. 2.研读算法,体会算法思想,能解决具体问题.
中国剩余定理

中国剩余定理(孙子定理)定义中国古代求解一次同余式组(见同余)的方法。
是数论中一个重要定理。
又称中国剩余定理。
编辑本段内容1、分别找出能任两个数整除,而满足被第三个整除余几的数。
2、将三个未知数加起来,减去这三个数的最小公倍数的整数倍。
N≡R1(mod d1) ≡R2(mod d2)≡R3(mod d3)则N=k1d2d3R1+k2d1d3R2+k3d1d2R3±d1d2d3P其中P为任意非负整数k1是满足k1d2d3≡1(mod d1)的最小正整数k2是满足k2d1d3≡1(mod d2)的最小正整数k3是满足k3d1d2≡1(mod d3)的最小正整数编辑本段解法解法中的三个关键数70,21,15,有何妙用,有何性质呢?首先70是3除余1而5与7都除得尽的数,所以70a是3除余a,而5与7都除得尽的数,21是5除余1,而3与7都除得尽的数,所以21b是5除余b,而3与7除得尽的数。
同理,15c是7除余c,3与5除得尽的数,总加起来 70a+21b+15c 是3除余a,5除余b ,7除余c的数,也就是可能答案之一,但可能不是最小的,这数加减105(105=3*5*7)仍有这样性质,可以多次减去105而得到最小的正数解。
附:如70,其实是要找余2的,但只要找到了余1的再乘2即余二了。
孙子问题的解法,以现代的说法,是找出三个关键数70,21,15。
解法的意思就是用70乘3除所得的余数,21乘5除所得的余数,15乘7除所得的余数,然后总加起来,除以105的余数就是答案。
即题目的答案为70×2+21×3+15×2=140+63+30=233233-2×105=23公式:70a+21b+15c-105n题中有三个数,分别为3、5、7,5*7/3余数为2,取35;3*7/5余数为1,要使余数为3,只需将3*7扩大3倍变成63即可;同样3*5/7的余数为1,要使余数为2,则将3*5扩大2倍,变成30。
孙子定理公式详解

孙子定理公式详解孙子定理,也称为中国剩余定理,是数论中的一个重要定理。
这定理听起来是不是有点高大上,让人感觉摸不着头脑?别担心,咱一步步来把它弄明白。
先来说说孙子定理到底是个啥。
想象一下,你有一堆苹果,要分给几个小伙伴。
但是呢,你只知道这些苹果除以某个数会余几,除以另一个数又会余几,然后你想知道到底有多少个苹果。
这时候孙子定理就派上用场啦!比如说,有一堆物品,除以 3 余 2,除以 5 余 3,除以 7 余 2,那这堆物品最少有多少个?这就是孙子定理能解决的问题。
咱们来看看孙子定理的公式。
假设整数 m1,m2,... ,mk 两两互质,M = m1 × m2 ×... × mk,Mi = M / mi(i = 1,2,... ,k),则同余方程组:x ≡ a1(mod m1)x ≡ a2(mod m2)...x ≡ ak(mod mk)的解为:x = (a1M1y1 + a2M2y2 +... + akMkyk)mod M ,其中 yi满足Miyi ≡ 1 (mod mi)(i = 1,2,... ,k)。
哎呀,这公式是不是看起来有点复杂?别着急,咱们通过一个具体的例子来理解。
就拿前面说的那堆物品的例子,除以 3 余 2,除以 5 余 3,除以 7余 2。
首先,3、5、7 两两互质,M = 3×5×7 = 105。
M1 = 105÷3 = 35,M2 = 105÷5 = 21,M3 = 105÷7 = 15。
接下来要找 y1、y2、y3,使得35y1 ≡ 1 (mod 3),21y2 ≡ 1(mod 5),15y3 ≡ 1 (mod 7)。
对于35y1 ≡ 1 (mod 3),因为 35 = 3×11 + 2,2×2 ≡ 1 (mod 3),所以 y1 = 2。
对于21y2 ≡ 1 (mod 5),因为 21 = 5×4 + 1,所以 y2 = 1。
初等数论中的几个重要定理

初等数论中的几个重要定理基础知识定义(欧拉(Euler)函数)一组数称为是模的既约剩余系,如果对任意的,且对于任意的,若=1,则有且仅有一个是对模的剩余,即。
并定义中和互质的数的个数,称为欧拉(Euler)函数。
这是数论中的非常重要的一个函数,显然,而对于,就是1,2,…,中与互素的数的个数,比如说是素数,则有。
引理:;可用容斥定理来证(证明略)。
定理1:(欧拉(Euler)定理)设=1,则。
分析与解答:要证,我们得设法找出个相乘,由个数我们想到中与互质的的个数:,由于=1,从而也是与互质的个数,且两两余数不一样,故(),而()=1,故。
证明:取模的一个既约剩余系,考虑,由于与互质,故仍与互质,且有,于是对每个都能找到唯一的一个,使得,这种对应关系是一一的,从而,。
,,故。
证毕。
这是数论证明题中常用的一种方法,使用一组剩余系,然后乘一个数组组成另外一组剩余系来解决问题。
定理2:(费尔马(Fermat)小定理)对于质数及任意整数有。
设为质数,若是的倍数,则。
若不是的倍数,则由引理及欧拉定理得,,由此即得。
定理推论:设为质数,是与互质的任一整数,则。
定理3:(威尔逊(Wilson)定理)设为质数,则。
分析与解答:受欧拉定理的影响,我们也找个数,然后来对应乘法。
证明:对于,在中,必然有一个数除以余1,这是因为则好是的一个剩余系去0。
从而对,使得;若,,则,,故对于,有。
即对于不同的对应于不同的,即中数可两两配对,其积除以余1,然后有,使,即与它自己配对,这时,,或,或。
除外,别的数可两两配对,积除以余1。
故。
定义:设为整系数多项式(),我们把含有的一组同余式()称为同余方组程。
特别地,,当均为的一次整系数多项式时,该同余方程组称为一次同余方程组.若整数同时满足:,则剩余类(其中)称为同余方程组的一个解,写作定理4:(中国剩余定理)设是两两互素的正整数,那么对于任意整数,一次同余方程组,必有解,且解可以写为:这里,,以及满足,(即为对模的逆)。
中国剩余定理

中国剩余定理【定理概述】 中国剩余定理(孙⼦定理)是中国古代求解⼀次同余式组的⽅法。
是数论中⼀个重要定理。
⼀元线性同余⽅程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙⼦算经》卷下第⼆⼗六题,叫做“物不知数”问题,原⽂如下:有物不知其数,三三数之剩⼆,五五数之剩三,七七数之剩⼆。
问物⼏何?即,⼀个整数除以三余⼆,除以五余三,除以七余⼆,求这个整数。
《孙⼦算经》中⾸次提到了同余⽅程组问题,以及以上具体问题的解法,因此在中⽂数学⽂献中也会将中国剩余定理称为孙⼦定理。
【求逆元】逆元的含义:模p意义下,1个数a如果有逆元x,那么除以a相当于乘以x。
ax≡1(mod p)。
⼀个数有逆元的充分必要条件是gcd(a,p)=1,此时逆元唯⼀存在,注意这⾥的唯⼀是指在群中唯⼀。
其实如果求出⼀个逆元x0,那么x0 + p*k都会满⾜上⾯的等式,但是我只取p内的正整数x0.【证明】由ax≡1(mod p)等价于这样⼀个⽅程a*x + p*y = 1 ,或者说这个⽅程x有解的话x必然满⾜ ax≡1(mod p)这个⽅程什么时候有解呢?很显然,当gcd(a,p) | 1时有解,所以gcd(a,p)只能是1,即a,p互质,证明完毕。
由此还可以得到⼀个结论,如果要求逆元,可以⽤扩展欧⼏⾥得求⼀组解(x,y),再求出x的最⼩正整数(x+p)%p,x就是a的唯⼀逆元。
⽅法1:费马⼩定理求逆元,p是,且gcd(a,p)=1在模为素数p的情况下,有费马⼩定理a p-1 ≡ 1(mod p)则a * a p-2 ≡ 1(mod p)所以a的逆元就是a p-2,⽤快速幂求即可。
#include<iostream>using namespace std;long long gcd(long long a, long long b){if(b == 0) return a;return gcd(b , a%b);}long long qPow(long long a ,long long n,long long mod){long long ans = 1;//如果n的⼆进制最后⼀位是1 结果参与运算//因为如果是0,那么幂运算之后该项是1,1乘任何数还是那个数,对结果不影响while(n > 0){if(n & 1)ans = (ans* a) % mod;a = (a*a) % mod;//底数加倍n >>= 1;//移位}return ans;}//long long invEle(long long a, long long mod){ //如果a 和模数不互质则必然不存在逆元if(gcd(a,mod) != 1 || mod < 2) return -1; return qPow(a,mod-2,mod);}int main(){long long a,b;int x,y;while(cin>>a>>b){cout<<invEle(a,b)<<endl;}}⽅法2:扩展欧⼏⾥得求逆元(⾼效)typedef long long ll;void extgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){ d=a; x=1; y=0;}else{ extgcd(b,a%b,d,y,x); y-=x*(a/b); }}ll inverse(ll a,ll n){ll d,x,y;extgcd(a,n,d,x,y);return d==1?(x+n)%n:-1;}⽅法3:欧拉定理求逆元(很少⽤到)模p不是素数的时候需要⽤到欧拉定理逆元打表:typedef long long ll;const int N = 1e5 + 5;int inv[N];void inverse(int n, int p) {inv[1] = 1;for (int i=2; i<=n; ++i) {inv[i] = (ll) (p - p / i) * inv[p%i] % p;}}【解⽅程组】根据定理概述以及解法,得到以下⽅法int CRT(int a[],int m[],int n){int M = 1;int ans = 0;for(int i=1; i<=n; i++)M *= m[i];for(int i=1; i<=n; i++){int x, y;int Mi = M / m[i];extend_Euclid(Mi, m[i], x, y);ans = (ans + Mi * x * a[i]) % M;}if(ans < 0) ans += M;return ans;}【扩展中国剩余定理】当模数mi两两互质时有以上解法,当模数不确定是否两两互质呢?摘⾃博客:https:///acdreamers/article/details/8050018这种情况就采⽤两两合并的思想,假设要合并如下两个⽅程那么得到在利⽤扩展欧⼏⾥得算法解出的最⼩正整数解,再带⼊得到后合并为⼀个⽅程的结果为这样⼀直合并下去,最终可以求得同余⽅程组的解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
孙子定理是数论中最重要的基本定理之一, 它实质上刻画了剩余系的结构.它的应用是非常 广泛的,在数学计算、保密通讯、测距和日常生 活中通常会用到。 陈景润《初等数论I》中有下列趣味问题: 甲、乙两港的距离不超过5000公里, 今有三只轮船于某天零时同时从甲港开往乙港。 假定三只轮船每天24小时都是匀速航行,
注释:
‘‘物不知其数’’问题及其解答,是 我国古代研究一次同余方程组并取得辉煌成 果的经典例证。 上面的解法中,总是先求出余1的数,再 求出余几的数,这种解法逐渐被总结为简洁 实用的‘‘求一术’’。‘‘物不知其数 ’’又名 ‘‘秦王暗点兵’’。
二、一次同余方程组和孙子定理
定理1:设 m1 , , mk 是两两互素的正整数,那 么对于任意整数 a1 , , ak ,一次同余方程组
4 m 2 1
m2 32
4 2 2 mm 1m 2m 3 2 3 5 3600
m3 52
M1 32 52 225
M11 1
M1M11 225
M 2 24 52 400
M 21 2
M 2 M 21 800
M3 24 32 144
j j
) 1
,
1 1 M M M 1 (mod m ) j j j j 的 所以满足
必存在。
由M M
j
1 j
1(modm j ) 及 m j | M i ( j i) 就推出 c M
1 M j j a j a j (mod mj )
,即
c
是解。
注释:
(1) 从孙子定理的算法思想来看,整个计算的
1 2 1 2 1 2 2 2 2
1 M 所以取 2 2.
由
144M31 1(mod52 ),19M31 1(mod52 ), M31 4(mod52 ),
1 M 所以取 3 4. 根据孙子定理,我们得
x 225 1 4 400 (2) 6 144 4 0 3900 3300(mod3600).
M 31 4
M 3M 31 576
a 1 4
00
a3 0
M3M 31a3 0
M1M11a1 M 2 M 21a2 M3M31a3 3900
所求率被衍母除后的最小正剩余为3300
由于甲、乙两港距离不超过5000公里, 所以实际距离为3300公里。又
一次同余方程组 和孙子定理
一、‘‘物不知其数’’问题及其 解法
二、一次同余方程组和孙子定理 三、孙子定理的应用
大约在公元4世纪,我国南北朝时期有一部 著名的算术著作《孙子算经》,其中就有这样一 个‘‘物不知其数’’问题: ‚今有物, 不知其数, 三三数之剩二, 五五数之剩三, 七七数之剩二, 问物几何? 答曰:二十三‛。
08:00:00
解:设甲、乙两港距离 x 公里。第二只轮船 18 240 18小时走的距离是 24 180 公里,第三只轮船 8 180 60 公里。按照题意有 8小时走的距离是 24
x 0(mod 300) x 180(mod 240) 。因为 (300, 240) 60,(300,180) 60,(240,180) 60, x 60(mod180)
1 M 难点集中在求 j
上,需要扩展的欧几里德算法
实现。当然在实际解题中,我们通常采用拼凑法。 (2) 孙子定理要求一次同余方程组的模 m1, m2 , , mk 两两互素,如果出现了某两个模不互素的情形则 应该将其转化为模互素的情形下的等价的一次 同余方程组,再用孙子定理求解。
三、孙子定理的应用
一、‘‘物不知其数’’问题及其 解法
明朝程大位编著的《算法统宗》里记载 了此题的解法,他是用一首歌谣叙述出来的:
三人同行七十稀, 五树梅花廿一枝, 七子团圆正半月, 除百零五便得知。 解答算式是: 70×2+21×3+15×2=233, 233-105×2=23.
上面解法的步骤及理由是:
(1) 先在5与7的公倍数中找除以3余1的数,进而找到 除以3余2的数。 ∵[5,7]=35,35÷3=11(余2),(35×2)÷3=23( 余1),而(70×2)÷3=46(余2),∴140符合条件。 (2)在3与7的公倍数中找除以5余3的数。 ∵[3,7]=21,21÷5=4(余1),(21×3)÷5=12( 余3),∴63就是符合条件的数。 (3) 在3与5的公倍数中找除以7余2的数。 ∵[3,5]=15,15÷7=2(余1),(15×2)÷7=4(余 2),∴30就是符合条件的数。
x a1 (m o dm1 ) x a (m o dm ) 2 2 x ak (m o dmk )
1 1 1 1
必定有解,
其解为 x M1M a M k M k ak (modm) ,这里 m m m1 mk ,M m ,
j j
M j M j 1(mod mj ) , (1 j k ) 。
1
证明:由于 m , , m
1
1 k
k
两两互素,所以 m [m1, , mk ] m1 mk 。
1 2 j
若一次同余方程组有解 c1 , c2 ,则 c1 c2 (modm) 。因为 m , , m 两两互素,c c (modm ),1 j k ,这就证明了同余 方程若有解,则解数为1。 下证 c M1M11a1 M k M k 1ak 确实是同余方程组的解。 显然 (m , M
(4) 将上面得到的分别符合三个条件的三个数相加 : 70×2+21×3+15×2=233。 ∵70(或140)是5和7的倍数,而3除余1(或余2) 的数。21(或63)是3和7的倍数,而5除余1(或余 3)的数。15(或30)是3和5的倍数,而7除余1 (或余2)的数。 ∴233是满足除以3余2、除以5余3和除以7余2的数。 又∵[3,5,7]=105,233-2×105=23也是它的解,而 且23<105。 ∴23是满足该题的最小解, 它的所有解为 X=105k+23(k=0,1,2, …)。
若干天后的零时第一只轮船首先到达, 几天后的18时第二只轮船也到达, 再过几天后的8时第三只轮船也到达了。 假若每天第一只轮船走300公里, 第二只轮船走240公里, 第三只轮船走180公里, 问甲、乙两港实际距离是多少公里, 三只轮船各走了多长时间?
00:00:00
甲 港
18:00:00
乙 港
所以该一次同余方程组不能直接用孙子定理解。 由于
2 300 22 3 52 , 240 24 3 5,180 22 3 5,
所以原一
x 4(mod 24 ) 次同余方程组与 2 x 6(mod 3 ) x 0(mod 52 )
有相同的解。
此处 m1 24 , m2 32 , m3 52 ,
a1 4, a2 6, a3 0,
M1 32 52 225, M2 24 52 400,M3 24 32 144,m 24 32 52 3600.
由于 225M11 1(mod 24 ), M11 1(mod 24 ), 所以取 M11 1. 由 400M 1(mod3 ), 4M 1(mod3 ), M 2(mod3 ),
3300 3300 3 3300 1 11, 13 , 18 . 300 240 4 180 3
答:甲、乙两港相距3300公里。第一 只轮船走11天,第二只轮船走13天18 小时,第三只轮船走18天8小时。