-
利用 c r t crt crt求解 x ≡ 8 ( m o d 11 ) , x ≡ 3 ( m o d 19 ) x\equiv 8(mod \space11),x\equiv3(mod\space 19) x≡8(mod 11),x≡3(mod 19)
令 n = 11 ∗ 19 = 209 n=11*19=209 n=11∗19=209
19 m o d 11 19 \space mod\space 11 19 mod 11下的乘法逆元为 7 7 7, 11 m o d 19 11\space mod \space 19 11 mod 19下的乘法逆元为 7 7 7,所以 x = 19 ∗ 7 ∗ 8 + 11 ∗ 7 ∗ 3 = 1295 ( m o d n ) = 41 x=19*7*8+11*7*3=1295(mod \space n)=41 x=19∗7∗8+11∗7∗3=1295(mod n)=41, -
利用 c r t crt crt求解 x ≡ 1 ( m o d 5 ) , x ≡ 2 ( m o d 7 ) , x ≡ 3 ( m o d 9 ) , x ≡ 4 ( m o d 11 ) x\equiv 1(mod \space5),x\equiv2(mod\space 7),x\equiv3(mod\space 9),x\equiv4(mod\space 11) x≡1(mod 5),x≡2(mod 7),x≡3(mod 9),x≡4(mod 11)
M = 5 ∗ 7 ∗ 9 ∗ 11 = 3465 M = 5*7*9*11=3465 M=5∗7∗9∗11=3465, b 1 = M / 5 = 693 b_1=M/5 = 693 b1=M/5=693, 693 m o d 5 693\space mod \space 5 693 mod 5下的乘法逆元为 2 2 2, b 2 = M / 7 = 495 , b 2 − 1 = 3 , b 3 = M / 9 = 385 b_2=M/7=495,b_2^{-1} = 3,b_3 = M/9=385 b2=M/7=495,b2−1=3,b3=M/9=385, b 3 − 1 = 4 b_3^{-1}=4 b3−1=4 , b 4 = M / 11 = 315 , b 4 − 1 = 8 b_4 = M/11=315,b_4^{-1}=8 b4=M/11=315,b4−1=8,所以 x = 693 ∗ 2 ∗ 1 + 495 ∗ 3 ∗ 2 + 385 ∗ 4 ∗ 3 + 315 ∗ 8 ∗ 4 = 19056 ( m o d M ) = 1731 x=693*2*1+495*3*2+385*4*3+315*8*4=19056(mod \space M)=1731 x=693∗2∗1+495∗3∗2+385∗4∗3+315∗8∗4=19056(mod M)=1731 -
设 m 和 n m和n m和n为互素的正整数, a > 0 a>0 a>0为一个正整数,如果
x ≡ a ( m o d m ) x\equiv a(mod\space m) x≡a(mod m)x ≡ a ( m o d n ) x\equiv a(mod\space n) x≡a(mod n)
x x x模 m n mn mn等于什么?为什么?
等于 a a a,从第一个同余式得到 x = m t + a , t ∈ Z x=mt+a,t\in \Z x=mt+a,t∈Z,把 x x x代入第二个同余式得到 m t + a ≡ a ( m o d n ) mt+a\equiv a(mod \space n) mt+a≡a(mod n),整理得 m t ≡ 0 ( m o d n ) mt\equiv 0(mod \space n) mt≡0(mod n),所以 m t m o d n = 0 mt\space mod\space n=0 mt mod n=0,因为 m , n m,n m,n互素,所以 ∃ k ∈ Z \exist k\in \Z ∃k∈Z,使得 t = k n t=kn t=kn,所以 x = k n m + a x=knm+a x=knm+a,即 x ≡ a ( m o d m n ) x\equiv a(mod \space mn) x≡a(mod mn),所以 x x x模 m n mn mn等于 a a a。 -
编程题
#只接受两个同余方程的程序 def egcd(a, b, f1, s1): while b != 0: f1, s1 = s1, f1 - a // b * s1 a, b = b, a%b return f1, a def get_multiply_reverse(a, b): r1, gcf = egcd(a, b, 1, 0) if gcf != 1: return -1 else: return r1 % b def crt(mod_m_num, m, mod_n_num, n): reverse_n = get_multiply_reverse(n, m) reverse_m = get_multiply_reverse(m, n) ans = (mod_m_num * n * reverse_n + mod_n_num * m * reverse_m) % (m * n) return ans n1, n2, n3, n4 = map(int, input().split(' ')) x = crt(n1, n2, n3, n4) print(x)
#接受多个同余方程 def egcd(a, b, f1, s1): while b != 0: f1, s1 = s1, f1 - a // b * s1 a, b = b, a%b return f1, a def get_multiply_reverse(a, b): r1, gcf = egcd(a, b, 1, 0) if gcf != 1: return -1 else: return r1 % b def multiply_crt(*args): mod_num = [] mod = [] for i in range(len(args)): if i % 2 == 0: mod_num.append(args[i]) else: mod.append(args[i]) s = 1 for item in mod: s *= item ans = 0 for i in range(len(mod)): n = s / mod[i] mod_reverse = get_multiply_reverse(n, mod[i]) ans += mod_num[i] * n * mod_reverse return ans % s n1, n2, n3, n4, n5, n6, n7, n8 = map(int, input().split(' ')) x = multiply_crt(n1, n2, n3, n4, n5, n6, n7, n8) print(x)
cinta作业9
最新推荐文章于 2021-12-30 23:27:45 发布