《算法导论》第三版第31章 数论算法 练习&思考题 个人答案

本文详细解答了《算法导论》第三版第31章中的基础数论概念、最大公约数、模运算、求解模线性方程等内容的练习题,涵盖31.1-1至31.7-3等多个知识点,并提供了证明和解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

31.8节和以后内容由于和所学专业相差过远,暂时停更。。。

31.1 基础数论概念

31.1-1

证明:
c m o d    a = ( a + b ) m o d    a = b m o d    a = b \begin{aligned} c\mod a & =(a+b)\mod a \\ &=b\mod a \\ &=b \end{aligned} cmoda=(a+b)moda=bmoda=b

31.1-2

证明: [ ( p 1 p 2 . . . p i . . . p k ) + 1 ] m o d    p i = [ ( p 1 p 2 . . . p i . . . p k ) m o d    p i ] + [ 1 m o d    p i ] = 1 [(p_1p_2...p_i...p_k)+1]\mod{p_i}=[(p_1p_2...p_i...p_k)\mod{p_i}]+[1\mod{p_i}]=1 [(p1p2...pi...pk)+1]modpi=[(p1p2...pi...pk)modpi]+[1modpi]=1
所以其中任意素数都不能整除该数,所以该数仍是个素数,所以有无穷多个素数。

31.1-3

证明:设 b = m a b=ma b=ma c = n b c=nb c=nb,则 c = m n a c=mna c=mna,所以 a ∣ c a\mid c ac

31.1-4

证明:如果k不是1,则k不能整除p,得出结论;如果k是1,则直接得出结论。

31.1-5

证明:设 a b = n k ab=nk ab=nk,则 b = n k a b=\frac{nk}{a} b=ank。因为 gcd ⁡ ( a , n ) = 1 \gcd(a,n)=1 gcd(a,n)=1,所以 n a \frac{n}{a} an不是整数(只要a不是1,如果是的话就易证了)。又因为b是整数,所以 k a \frac{k}{a} ak是一个整数,所以 n ∣ b n\mid b nb

31.1-6

证明:
( a + b ) p ≡ a p + ( p 1 ) a p − 1 b 1 + ⋯ + ( p p − 1 ) a 1 b p − 1 + b p ( m o d    p ) ≡ a p + 0 + ⋯ + 0 + b p ( m o d    p ) ≡ a p + b p ( m o d    p ) \begin{array}{rlll} (a + b) ^ p & \equiv & a^p + \binom{p}{1} a^{p - 1}b^{1} + \cdots + \binom{p}{p - 1} a^{1}b^{p - 1} + b^p & (\mod p) \\ & \equiv & a^p + 0 + \cdots + 0 + b^p & (\mod p) \\ & \equiv & a^p + b^p & (\mod p) \end{array} (a+b)pap+(1p)ap1b1++(p1p)a1bp1+bpap+0++0+bpap+bp(modp)(modp)(modp)

31.1-7

证明:假设 x = k b + c x = kb + c x=kb+c,有 ( x m o d    b ) m o d    a = c m o d    a (x \mod b) \mod a = c \mod a (xmodb)moda=cmoda x m o d    a = ( k b + c ) m o d    a = ( k b m o d    a ) + ( c m o d    a ) = c m o d    a x \mod a = (kb + c) \mod a = (kb \mod a) + (c \mod a) = c \mod a xmoda=(kb+c)moda=(kbmoda)+(cmoda)=cmoda

31.1-8

证明:因为 2 β &gt; n 2^\beta &gt; n 2β>n,所以只要验证满足 2 ≤ k &lt; β 2 \le k &lt; \beta 2k<β k k k值,因此验证过程的时间复杂度是 O ( β ) O(\beta) O(β)
对任意非平凡指数 k k k 2 ≤ k &lt; β 2 \le k &lt; \beta 2k<β,使用二分查找找到 a a a,时间复杂度 O ( log ⁡ n ) = O ( log ⁡ 2 β ) = O ( 1 2 log ⁡ 2 β ) = O ( β ) O(\log \sqrt n) = O(\log \sqrt{2^\beta}) = O(\frac 1 2\log 2^\beta) = O(\beta) O(logn )=O(log2β )=O(21log2β)=O(β)。因此,总时间复杂度是 O ( β ) × O ( β ) = O ( β 2 ) O(\beta) \times O(\beta) = O(\beta^2) O(β)×O(β)=O(β2)

31.1-9

证明:
(31.6)略
(31.7)gcd(a,b)是a的约数中能整除b的最大的一个,而a和-a有相同的约数,所以也是-a的约数中能整除b的最大的一个,所以也是gcd(-a,b)。
(31.8)由(31.7)可得。
(31.9)a的最大约数是|a|,而它也能整除0,所以gcd(a,0)=|a|。
(31.10)思路同(31.9)

31.1-10

证明(本题证明思路来自https://blog.csdn.net/z84616995z/article/details/21945197):
定义“ gcd ⁡ ( a , b , c ) \gcd(a,b,c) gcd(a,b,c)”为a,b,c三个数的最大公约数,需证明 gcd ⁡ ( a , gcd ⁡ ( b , c ) ) = gcd ⁡ ( a , b , c ) = gcd ⁡ ( gcd ⁡ ( a , b ) , c ) \gcd(a, \gcd(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值