CINTA——6

CINTA——6

第一题

利用中国剩余定理,解法如下:

1、记 a = 8 , b = 3 , p = 11 , q = 19 , n = 11 ⋅ 19 = 209 ; a=8,b=3,p=11,q=19,n=11\cdot19=209; a=8,b=3,p=11,q=19,n=1119=209;

2、使用egcd算法求解 p − 1 p^{-1} p1 q − 1 q^{-1} q1,它们分别使 p p − 1 ≡ 1 ( m o d q ) pp^{-1}\equiv1\pmod q pp11(modq), q q − 1 ≡ 1 ( m o d p ) qq^{-1}\equiv 1\pmod p qq11(modp)。得到 p − 1 = 7 , q − 1 = 7 ( o r − 4 ) p^{-1}=7,q^{-1}=7(or-4) p1=7,q1=7(or4)
(注意:乘法逆元并不唯一,可以为正,也可以为负,不影响最后的求解结果)
但是在群里面,群元素的乘法逆元唯一
3、令 x = a q q − 1 + b p p − 1 ( m o d n ) x=aqq^{-1}+bpp^{-1}\pmod n x=aqq1+bpp1(modn),解得 x = 41 x=41 x=41
特别注意运算的最后不要忘记 ( m o d p q ) \pmod{pq} (modpq)
4、经验证可得: x x x是正解。

第二题

根据中国剩余定理的推广版:
其实,思路和正常的中国剩余定理是相同的,只不过乘法逆元求得是对剩下元素乘积的逆元 (其实也可以看作一个,最后总会算成一个来求解的),而不单单是一个元素了
存在 M = 5 ⋅ 7 ⋅ 9 ⋅ 11 M=5\cdot7\cdot9\cdot11 M=57911,使得方程组模 M M M有唯一解
x = ∑ i = 0 n a i b i b − 1 ( m o d M ) x=\sum_{i=0}^na_i b_i b^{-1}\pmod M x=i=0naibib1(modM)
其中, b i = M i / m i b_i=M_i/m_i bi=Mi/mi,且存在 b i − 1 b_i^{-1} bi1使得 b i b i − 1 ≡ 1 ( m o d m i ) b_ib_i^{-1}\equiv1\pmod {m_i} bibi11(modmi)

根据egcd算法可以求得 b i b_i bi的值


( 7 ∗ 9 ∗ 11 ) ⋅ b 1 − 1 ≡ 1 ( m o d 5 ) (7*9*11)\cdot b_1^{-1}\equiv 1\pmod 5 (7911)b111(mod5)

( 5 ∗ 9 ∗ 11 ) ⋅ b 2 − 1 ≡ 1 ( m o d 7 ) (5*9*11)\cdot b_2^{-1}\equiv 1\pmod 7 (5911)b211(mod7)

( 5 ∗ 7 ∗ 11 ) ⋅ b 3 − 1 ≡ 1 ( m o d 9 ) (5*7*11)\cdot b_3^{-1}\equiv 1\pmod 9 (5711)b311(mod9)

( 5 ∗ 7 ∗ 9 ) ⋅ b 4 − 1 ≡ 1 ( m o d 11 ) (5*7*9)\cdot b_4^{-1}\equiv 1\pmod {11} (579)b411(mod11)

得: b 1 − 1 = 2 b_1^{-1}=2 b11=2, b 2 − 1 = 3 b_2^{-1}=3 b21=3, b 3 − 1 = 4 b_3^{-1}=4 b31=4, b 4 − 1 = 8 b_4^{-1}=8 b41=8


x = 1 ∗ 7 ∗ 9 ∗ 11 ∗ 2 + 2 ∗ 5 ∗ 9 ∗ 11 ∗ 3 + 3 ∗ 5 ∗ 7 ∗ 11 ∗ 4 + 4 ∗ 5 ∗ 9 ∗ 7 ∗ 8 ( m o d 5 ∗ 7 ∗ 9 ∗ 11 ) x=1∗7∗9∗11∗2+2∗5∗9∗11∗3+3∗5∗7∗11∗4+4∗5∗9∗7∗8 \pmod {5*7*9*11} x=179112+259113+357114+45978(mod57911),得: x = 1731 x=1731 x=1731

第三题

本题考查代数版本下的中国剩余定理:其实用数论版本下的中国剩余定理也可以做,只不过用代数版本的话会简单许多

设 n = pq,p和g是两个互素的正整数。给定一个任意正整数x,它可以表达为一个唯一的序对: ( [ x ( m o d p ) ] , [ x ( m o d q ) ] ) ([x\pmod p], [x\pmod q]) ([x(modp)],[x(modq)])

221可以分为13*17,17与13互素,x即为2000,故 x ↔ ( 11 , 11 ) x\leftrightarrow(11,11) x(11,11),故 200 0 2019 ( m o d 221 ) ↔ ( 11 , 11 ) 2019 ( m o d 221 ) = ( [ 1 1 2019 ( m o d 13 ) ] , [ 1 1 2019 ( m o d 17 ) ] ) 2000^{2019}\pmod{221}\leftrightarrow(11,11)^{2019}\pmod{221}=([11^{2019}\pmod {13}],[11^{2019}\pmod {17}]) 20002019(mod221)(11,11)2019(mod221)=([112019(mod13)],[112019(mod17)])

再根据费尔马小定理,则上式等于 ( [ 1 1 168 ∗ ( 13 − 1 ) + 3 ( m o d 13 ) ] , [ 1 1 126 ∗ 16 + 3 ( m o d 17 ) ] ) = ( [ 1 1 3 ( m o d 13 ) ] , [ 1 1 3 ( m o d 17 ) ] ) = ( 5 , 5 ) ([11^{168*(13-1)+3}\pmod {13}],[11^{126*16+3}\pmod {17}])=([11^3\pmod {13}],[11^3\pmod {17}])=(5,5) ([11168(131)+3(mod13)],[1112616+3(mod17)])=([113(mod13)],[113(mod17)])=(5,5)

( 5 , 5 ) ↔ 5 (5,5)\leftrightarrow5 (5,5)5,故 200 0 2019 ( m o d 221 ) = 5 2000^{2019}\pmod{221}=5 20002019(mod221)=5

通过做题可以总结出一点规律:如果代数版本下的求解结果里面两个位置的数是完全相同的,那么最后的转换成一个数的结果就是这个数

第七题

from functools import reduce
#利用egcd算法求逆元
def egcd(a, b):
    if b == 0:
        return a, 1, 0
    else:
        g, x, y = egcd(b, a % b)
        return g, y, x - (a // b) * y
#中国剩余定理求唯一解
def CRT(n, a):
    sum = 0
    prod = reduce(lambda a, b: a*b, n)
#reduce函数用于计算列表n中所有元素的乘积。lambda a, b: a*b是一个匿名函数,它接受两个参数a和b,并返回它们的乘积。
    for n_i, a_i in zip(n, a):
        p = prod // n_i
        g, x, y = egcd(p, n_i)
        sum += a_i * y * p
    return sum % prod
#定义主函数
def main():
    n = [3, 5, 7]#3同余5mod7
    a = [2, 3, 2]#2同余3mod2
    result = CRT(n, a)
    print("同余方程的解为:", result)
if __name__ == "__main__":
    main()

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值