第九章 同余式、幂与费马小定理
习题9.1
习题9.2
习题9.3
习题9.4
第十章 同余式、幂与欧拉公式
习题10.1
习题10.2
习题10.3
第十一章 欧拉函数与中国剩余定理
习题11.1
习题11.2
习题11.3
习题11.4
习题11.5
习题11.6
习题11.7
习题11.8
习题11.9
习题11.10
习题11.11
习题11.12
习题11.13
代码-乘法快速幂
代码-解同余式
其他
第九章 同余式、幂与费马小定理
习题9.1
利用费马小定理求解下述题目。
(a) 求数 0 ≤ a < 73 ,使得 a ≡ 9 794 mod 73 .
(b) 解 x 86 ≡ 6 mod 29
(c) 解 x 39 ≡ 3 mod 13
(a) a ≡ 9 794 ≡ 9 72 × 11 + 2 ≡ 9 2 ≡ 8 mod 73
(b) x 86 ≡ x 28 × 3 + 2 ≡ x 2 ≡ 6 mod 29 ⇒ x ≡ 8 , 21 mod 29
(c) x 39 ≡ x 12 × 3 + 3 ≡ x 3 ≡ 3 mod 13 ⇒ 无解
习题9.2
虽然我们不需要知道 ( p − 1 )! mod p 的值,但是 ( p − 1 )! mod p 出现在费马小定理的证明中。
(a) 对某些小的 p 值,计算 ( p − 1 )! mod p ,找出模式并提出猜想
(b) 证明你的猜想是正确的。(对小的 p 值,试寻找 ( p − 1 )! mod p 产生这种数值的原因,然后推广你的观察,证明结论对所有 p 成立。)
(a)
⎩ ⎨ ⎧ p = 2 p = 3 p = 5 p = 7 ( p − 1 )! = 1 ≡ p − 1 mod p ( p − 1 )! = 2 ≡ p − 1 mod p ( p − 1 )! = 24 ≡ p − 1 mod p ( p − 1 )! = 720 ≡ p − 1 mod p
(b) 证:( p − 1 )! ≡ p − 1 mod p 。可先证下面三个结论,即可得证。当 p 为奇素数时,满足:
⎩ ⎨ ⎧ p > 2 时, a 2 ≡ 1 mod p 仅有 ± 1 两个解 当 a = ± 1 时, a x ≡ 1 mod p 恰有一个解,且 x ≡ a mod p 当 a ≡ b mod p ,则 a − 1 ≡ b − 1 mod p 模 p 多项式根定理 线性同余式定理并结合第一给出的证明 反证法
习题9.3
当 p 是素数时,习题9.2要求你确定 ( p − 1 )! mod p 的值。
(a) 对某些小的合数m的值,计算( m − 1 )! mod m 。你能得到对素数所发现的相同模式吗?
(b) 如果已知( n − 1 )! mod n 的值,如何使用这个值明确判断 n 是合数还是素数?
答:m 是合数,则 m 一定可以表示为 m = m 1 m 2 ( m 1 , m 2 < m ) 的形式,而( m − 1 )! 必然包含m 1 , m 2 ,由此可知( m − 1 )! ≡ 0 mod m .
习题9.4
如果 p 是素数,a ≡ 0 mod p ,则由费马小定理可知 a p − 1 ≡ 1 mod p .
(a) 同余式7 1734250 ≡ 1660565 mod 1734251 成立,你能得到1734251 是合数的结论吗?
(b) 同余式12 9 64026 ≡ 15179 mod 64027 成立,你能得到64027 是合数的结论吗?
(c) 同余式2 52632 ≡ 1 mod 52633 成立,你能得到52633 是素数的结论吗?
答:若 p 是素数,a ≡ 0 mod p ,则 a p − 1 ≡ 1 mod p .其逆否命题为:
若存在a ≡ 0 mod m 满足 a m − 1 ≡ 1 mod m ,则 m 一定是合数。
(a) 可以确定1734251是合数 (b) 可以确定64027是合数 (c) 52633有可能是素数,也有可能是合数
第十章 同余式、幂与欧拉公式
习题10.1
设 b 1 < b 2 < ⋯ < b ϕ ( m ) 是 1 与 m 之间且与 m 互素的整数(包括 1 ), B = b 1 b 2 ⋯ b ϕ ( m ) 是他们的乘积。B 来自于欧拉公式的证明。
(a) 证明 B ≡ 1 mod m 或 B ≡ − 1 mod m 。
(b) 对某些小的 m 值计算 B , 试寻找当它等于 1 mod m 和 − 1 mod m 时的模式。
(a) 1. 由( b i , m ) = 1 可知,存在1 ≤ x < m 使得 b i x ≡ 1 mod m ,同样可证明( x , m ) = 1 ,即 x ∈ { b 1 , b 2 , ⋯ , b ϕ ( m ) } ,也可用反证法证明当i = j 时,b i − 1 ≡ b j − 1 mod m . 现从集合{ b 1 , b 2 , ⋯ , b ϕ ( m ) } 中去除b i − 1 mod b i mod m 即 b i 2 ≡ 1 mod p 的元素,并令b i x ≡ 1 mod m 的解 x = b j 与 b i 可构成一对 ( b i , b j ) , b i b j ≡ 1 mod m ,得∏ b i 2 ≡ 1 mod m b i ≡ 1 mod m .
若b i 2 ≡ 1 mod m ⇒ ( − b i ) 2 ⇒ 1 mod m ⇒ b i × ( − b i ) ≡ − 1 mod m ,可令( b i , − b i ) 构成一对。
当 m 为奇数时,显然不存在 b ′ = m − b ′ ,当 m 为偶数时,显然b ′ = 2 m ∣ m ,即(2)中所述的数对不存在b i ≡ − b i mod m 的情形。
(b)
⎩ ⎨ ⎧ m = 4 m = 6 m = 8 m = 9 m = 10 B = − 1 B = − 1 B = 1 B = − 1 B = 1
猜想:a 2 ≡ 1 mod m 的解的个数为 4 的倍数时,值为 1 ,否则为 − 1 。(a) 中已给出证明。
那什么时候解的个数为 4 的倍数呢?说下发现,质因数2 至多只能提供四个解,
其余奇质因数最多只能提供两个解。描述:若 m = 2 c p 1 k 1 p 2 k 2 ⋯ p r k r , m 为合数,a 2 ≡ 1 mod m 的解的个数2 ma x ( 0 , min ( c − 1 , 2 )) + r 个。暂无法给出证明。
习题10.2
可以验证数 3750 满足 ϕ ( 3750 ) = 1000 .求满足下述三个性质的数a
(i) a ≡ 7 3003 mod 3750
(ii) 1 ≤ a ≤ 5000
(iii) a 不被 7 整除。
答:( 7 , 3750 ) = 1 ⇒ a ≡ 7 3003 = 7 1000 × 3 + 3 ≡ 7 3 = 343 mod 3750 , 1 ≤ a ≤ 5000 , ⇒ a = 343 + 3750 = 4093
习题10.3
如果对每个整数 a ( g c d ( a , m ) = 1 ) ,同余式 a m − 1 ≡ 1 mod m 成立,则称合数是卡米歇尔数。
(a) 验证 m = 561 = 3 ⋅ 11 ⋅ 17 是卡米歇尔数。(提示:不必对 a 的所有320个值计算 a m − 1 mod m ,而是使用费马小定理验证对整除 m 的每个素数 p ,有 a m − 1 ≡ 1 mod p ,然后解释为什么这蕴含 a m − 1 ≡ 1 mod m .)
(b) 试求另一个卡米歇尔数。你认为存在无穷多个卡米歇尔数吗?
(a) a 560 ≡ a 2 × 280 ≡ 1 mod 3 , a 560 ≡ a 10 × 56 ≡ 1 mod 11 , a 560 ≡ a 16 × 35 ≡ 1 mod 17
结论:若b ≡ c mod p 1 , b ≡ c mod p 2 , ( p 1 , p 2 ) = 1 ,则 b ≡ c mod p 1 p 2
证:p 1 x + p 2 y = 1 , b = p 1 k 1 + c = p 2 k 2 + c ⇒ k 1 = p 2 ( x k 2 + y k 1 ) ⇒ b = p 1 p 2 ( x k 2 + y k 1 ) + c
(b) 1105 = 5 × 13 × 17
第十一章 欧拉函数与中国剩余定理
习题11.1
(a) 求 ϕ ( 97 ) 的值。
(b) 求 ϕ ( 8800 ) 的值。
(a) ϕ ( 97 ) = 96 .
(b) ϕ ( 8800 ) = ϕ ( 2 5 ) ϕ ( 5 2 ) ϕ ( 11 ) = 1 ⋅ 2 4 ⋅ 4 ⋅ 5 ⋅ 10 = 3200
习题11.2
(a) 如果 m ≥ 3 ,解释为什么 ϕ ( m ) 总是偶数。
(b) ϕ ( m ) “经常” 被 4 整除。叙述 ϕ ( m ) 不被 4 整除的所有 m .
(a) ϕ ( p k ) = ( p − 1 ) p k , p 为质数,p 为 2 时 p k ≥ 2 为偶数,p 为质数时 p − 1 为偶数。
(b) m = 2 , 4 或 2 k 0 p k 1 , 0 ≤ k 0 ≤ 1 , p ≡ 3 mod 4 ,p为质数
习题11.3
假设 p 1 , p 2 , ⋯ , p r 是整除 m 的不同素数。证明 ϕ ( m ) 的下述公式成立。
ϕ ( m ) = m ( 1 − p 1 1 ) ( 1 − p 2 1 ) ⋯ ( 1 − p r 1 )
使用这个公式计算 ϕ ( 1_000_000 ) .
m = p 1 k 1 p 2 k 2 ⋯ p r k r ⇒ ϕ ( m ) = ( p 1 k 1 − p 1 k 1 − 1 ) ( p 2 k 2 − p 2 k 2 − 1 ) ⋯ ( p r k r − p r k r − 1 ) = p 1 k 1 ( 1 − p 1 1 ) ⋯ p r k r ( 1 − p r 1 ) = p 1 k 1 ⋯ p r k r ( 1 − p 1 1 ) ⋯ ( 1 − p r 1 ) = m ( 1 − p 1 1 ) ⋯ ( 1 − p r 1 )
ϕ ( 1_000_000 ) = 1_000_000 ⋅ 2 1 ⋅ 5 4 = 400_000
习题11.4
编写程序计算欧拉公式 ϕ ( n ) 的值。应该使用 n 的素因数分解来计算 ϕ ( n ) ,而不是通过求与 n 互素的 1 到 n 之间的所有 a 来计算 ϕ ( n ) .
略。可使用习题11.3的结论来简化计算。1. 找出 n 的所有质因子,2. 初始化 ϕ ( m ) = m ,3. 对每个不同的质因子 p i 执行 ϕ ( m ) = p i ( p i − 1 ) × ϕ ( m ) 的操作。
习题11.5
对每个同余式组求其解 x .
(a) x ≡ 3 ( m o d 7 ) , x ≡ 5 ( m o d 9 )
(b) x ≡ 3 ( m o d 37 ) , x ≡ 1 ( m o d 87 )
(c) x ≡ 5 ( m o d 7 ) , x ≡ 2 ( m o d 12 ) , x ≡ 8 ( m o d 13 )
(a) x ≡ 3 × 9 × 9 ′ + 5 × 7 × 7 ′ ( m o d 7 × 9 ) ⇒ x ≡ 27 × ( − 3 ) + 35 × 4 ≡ 59 ( m o d 63 )
(b) x ≡ 3 × 87 × 8 7 ′ + 1 × 37 × 3 7 ′ = 3 × 87 × ( − 17 ) + 1 × 37 × 40 ≡ 262 ( m o d 3219 )
(c) x ≡ 5 × 7 7 × 12 × 13 × ( 7 7 × 12 × 13 ) ′ + 2 × 12 7 × 12 × 13 × ( 12 7 × 12 × 13 ) ′ + 8 × 13 7 × 12 × 13 × ( 13 7 × 12 × 13 ) ′ = 5 × 156 × ( − 3 ) + 2 × 91 × ( − 5 ) + 8 × 84 × ( − 2 ) ≡ 866 ( m o d 1092 )
注:上述计算来自中国剩余定理。
证明:
⎩ ⎨ ⎧ x ≡ c 1 ( m o d a 1 ) x ≡ c 2 ( m o d a 2 ) ⋯ x ≡ c r ( m o d a r ) ( a i , a j ) = 1 , ( i = j ) ⇒ ⎩ ⎨ ⎧ M = a 1 a 2 ⋯ a r M i = a i M M i M i ′ + a i a i ′ = 1 x = c 1 M 1 M 1 ′ + c 2 M 2 M 2 ′ + ⋯ + c r M r M r ′ ( m o d M )
观察其中某一项 T i = c i M i M i ′ 可得知,该项满足 T i ≡ c i ( m o d a i ) ,对于j = i 均有T i ≡ 0 ( m o d a j ) . 因此该式确为原方程的解。
习题11.6
解“历史插曲”提到的《孙子算经》中已有1700年历史的中国剩余问题。
x ≡ 2 ( m o d 3 ) , x ≡ 3 ( m o d 5 ) , x ≡ 2 ( m o d 7 ) ⇒ x ≡ 23 ( m o d 105 )
习题11.7
一个农夫在去集市的路上,流星打中了他的小货车,击碎了他的鸡蛋,为申请保险索赔,他需要知道打碎了多少鸡蛋。他知道两两数之于一,三三数之余一,四四数之余一,五五数之余一,六六数之余一,七七数之余零。问小货车里鸡蛋的最少个数是多少?
简化计算,利用上一章习题中的推论:若 ( a 1 , a 2 ) = 1 , x ≡ c ( m o d a 1 ) , x ≡ c ( m o d a 2 ) ,则有 x ≡ c ( m o d a 1 a 2 ) 。
将该结论做个引申:若 ( a 1 , a 2 ) = g , x ≡ c ( m o d a 1 ) , x ≡ c ( m o d a 2 ) ,则有 x ≡ c ( m o d g a 1 a 2 ) 。
则该题化简为:x ≡ 1 ( m o d 60 ) , x ≡ 0 ( m o d 7 ) ,可得x ≡ 301 ( m o d 420 ) .
证明:a 1 x + a 2 y = g , x = k 1 a 1 + c = k 2 a 2 + c ⇒ x = g a 1 a 2 ( k 2 x + k 1 y ) + c
习题11.8
编写程序,取四个整数 ( b , m , c , n ) , ( m , n ) = 1 作为输入,计算满足
x ≡ b ( m o d m ) , x ≡ c ( m o d n ) , 0 ≤ x < mn
的整数解。
见代码部分。
习题11.9
在本习题中将证明三个同余式的中国剩余定理,设 m 1 , m 2 , m 3 是两两互素的正整数,即
g c d ( m 1 , m 2 ) = 1 , g c d ( m 1 , m 3 ) = 1 , g c d ( m 2 , m 3 ) = 1
设 a 1 , a 2 , a 3 是任意三个整数。证明同余式组
x ≡ a 1 ( m o d m 1 ) , x ≡ a 2 ( m o d m 2 ) , x ≡ a 3 ( m o d m 3 )
在区间 0 ≤ x < m 1 m 2 m 3 恰有一个整数解。你能找出将这个问题推广到处理多个同余式
x ≡ a 1 ( m o d m 1 ) , x ≡ a 2 ( m o d m 2 ) , ⋯ , x ≡ a r ( m o d m r )
的模式吗?特别的 m 1 , m 2 , ⋯ , m r 需要满足什么条件呢?
答:由中国剩余定理可知 x ≡ a 1 ( m o d m 1 ) , x ≡ a 2 ( m o d m 2 ) 在 0 ≤ x < m 1 m 2 上恰有一解,记为 a 1 ′ ,又 ( m 1 m 2 , m 3 ) = 1 ,可知x ≡ a 1 ′ ( m o d m 1 m 2 ) , x ≡ a 3 ( m o d m 3 ) ,在 0 ≤ x < m 1 m 2 m 3 上恰有一解a 3 ′ 。即原方程在 0 ≤ x < m 1 m 2 m 3 恰有一个整数解。
模式:如习题11.5中所提。
习题11.10
若 ϕ ( n ) 是素数,你能说出 n 有什么模式吗?如果 ϕ ( n ) 是素数的平方,n 有满足什么模式呢?
答:由习题11.2可知,当 n ≥ 3 时,ϕ ( n ) 总是偶数。因此:
(i) 若 ϕ ( n ) 是素数,则 n = 3 , 4
(ii) 如果 ϕ ( n ) 是素数的平方,则 n = 5 , 10 , 8 , 12
习题11.11
(a) 求 ϕ ( n ) = 160 的至少5个不同整数。你能求出更多吗?
(b) 假设整数 n 满足 ϕ ( n ) = 1000 。列出可能整除 n 的所有素数。
(c) 由(b) 求出所有满足 ϕ ( n ) = 1000 的所有整数。
(a) 答:160 = 2 × 2 × 2 × 2 × 2 × 5
⎩ ⎨ ⎧ 17 × 11 2 × 17 × 11 32 × 11 16 × 3 × 11 8 × 25 4 × 3 × 25 8 × 41 4 × 3 × 41 161 2 × 161
(b)(c) 答:1000 = 2 × 2 × 2 × 5 × 5 × 5
⎩ ⎨ ⎧ 8 × 251 4 × 3 × 251 5 × 251 2 × 5 × 251 4 × 5 4 3 × 5 4 2 × 3 × 5 4 11 × 5 3 2 × 11 × 5 3 11 × 101 2 × 11 × 101 51 × 5 2 2 × 51 × 5 2 4 × 11 × 51 3 × 11 × 51 2 × 3 × 11 × 51
挺多的,就是排列组合。两组之间不能构造出相同的数即可。
习题11.12
解下述方程,求 n 的所有值。
(a) ϕ ( n ) = 2 n .
(b) ϕ ( n ) = 3 n
(c) ϕ ( n ) = 6 n
(a) ϕ ( n ) = n ⋅ 2 1 ⇒ n = 2 k , k ≥ 1
(b) ϕ ( n ) = n ⋅ 2 1 ⋅ 3 2 ⇒ n = 2 k 0 3 k 1 , k 0 , k 1 ≥ 1
(c) ϕ ( n ) = n p 1 p 1 − 1 p 2 p 2 − 1 ⋯ p r p r − 1 , p i ≥ 2 ,若原式有解,则必然存在 p i ∣ 6 ,经验证p i , p j = 2 , 3 时均不是方程的解。
习题11.13
(a) 对每个整数 2 ≤ a ≤ 10 ,求 a 1000 的最末四位数。
(b) 基于 (a) 的试验(如果有必要的话,进一步试验),给出一种简单判别法,使得可由 a 的值预测 a 1000 的最末四位数。
(c) 证明 (b) 中你的判别法是正确的。
答:
⎩ ⎨ ⎧ 2 ∤ a , 5 ∤ a 2 ∣ a , 5 ∤ a 2 ∤ a , 5 ∣ a 2 ∣ a , 5 ∣ a a 1000 ≡ 1 ( m o d 10000 ) a 1000 ≡ 9376 ( m o d 10000 ) a 1000 ≡ 625 ( m o d 10000 ) a 1000 ≡ 0 ( m o d 10000 )
(i) 使用快速幂计算可得2 1000 ≡ 9376 ( m o d 10000 ) , 5 1000 ≡ 625 ( m o d 10000 ) ,2 , 5 的计算只能硬算,其余可省略。
(ii) 9376 × 9376 ≡ 9376 ( m o d 10000 ) , 625 × 625 ≡ 625 ( m o d 10000 ) , 9376 × 625 ≡ 0 ( m o d 10000 )
(iii) ( a , 10000 ) = 1 时,a 1000 = a 8 × 125 = a ϕ ( 16 ) × 125 ≡ 1 ( m o d 16 ) , a 1000 = a 8 × 125 = a ϕ ( 625 ) × 4 ≡ 1 ( m o d 625 )
因( 16 , 625 ) = 1 ,于是 a 1000 ≡ 1 ( m o d 10000 )
(iv) 令a = 2 m 5 n p , ( p , 10000 ) = 1 ,则 a 1000 ≡ 2 1000 × m 5 1000 × n p 1000 ≡ 937 6 min ( m , 1 ) × 62 5 min ( n , 1 ) × 1 ( m o d 10000 )
代码-乘法快速幂
public int qpow ( int x , int n , int m ) {
long t = 1 , r = x ;
while ( n > 0 ) {
if ( n % 2 == 1 ) t = t * r % m ;
r = r * r % m ;
n >>= 1 ;
}
return ( int ) t ;
}
代码-解同余式
public Pair < Boolean , Integer > remainder ( int b , int m , int c , int n ) {
//欧几里得扩展法
int [ ] g = _gcd ( m , n ) ;
//不互质时,返回false,与最大公约数,代表无确定解,不代表无解
//不互质时,可能无解,也可能有多个解
if ( g [ 2 ] > 1 ) return new Pair < > ( false , g [ 2 ] ) ;
int r = ( n * g [ 1 ] * b + m * g [ 0 ] * c ) % ( m * n ) ;
if ( r < 0 ) r += m * n ;
return new Pair < > ( true , r ) ;
}
其他
数论概论⋅ 第一部分
数论概论⋅ 第二部分
数论概论⋅ 第三部分
数论概论⋅ 第四部分
数论概论⋅ 第六部分