中國剩餘定理 模數互質

2021-10-07 22:49:51 字數 695 閱讀 2863

from functools import

reduce

import sympy

defcrt

(n, a)

:sum=0

prod =

reduce

(lambda a, b: a * b, n)

#reduce(function,n):將資料集合n(可以是列表,也可以是元組等)的前兩個資料做function函式運算,然後將結果與n中的後乙個元素做function運算,最後會返回乙個結果.

for n_i, a_i in

zip(n, a)

:#zip(a,b)將a,b中的資料打包成元組的列表[(a1,b1),(a2,b2),(a3,b3)......]

p = prod // n_i

sum+= a_i * sympy.invert(p, n_i)

* p return

int(

sum% prod)

#,其中n是模數,a是餘數.

#中國剩餘定理可以得到乙個最小的滿足方程組的解.

'''假設mult[i]表示除n[i]的其他n中的元素的積

sum(a[i]*invert(mult[i],n[i])*mult[i])%(mult[i]*n[i])其中i=0,1,2,3,4,5......

'''

中國剩餘定理(除數不互質)

對於 x mod 1 a 1 x mod 2 a 2 x mod 3 a 3 mod i 之間不一定互質,求解最小x。對於 mod i 之間不一定互質的情況,需要將剩餘定理修改一點。對於第乙個方程 x 0 mod 0 a 0 可知 x 0 的最小解即為 a 0 對於第二個方程x 1 mod 1 a ...

中國剩餘定理 模版(互質版)

1079 中國剩餘定理 基準時間限制 1 秒 空間限制 131072 kb 分值 0 乙個正整數k,給出k mod 一些質數的結果,求符合條件的最小的k。例如,k 2 1,k 3 2,k 5 3。符合條件的最小的k 23。input 第1行 1個數n表示後面輸入的質數及模的數量。2 n 10 第2 ...

中國剩餘定理 擴充套件中國剩餘定理

中國剩餘定理 對於求解一元不定方程組 的一種演算法叫做中國剩餘定理。又名孫子定理。其中m1,m2,m3.mk 為兩兩互質的整數,求x的最小非負整數解 令m mi 1 i n m是所有mi的最小公倍數 ti為同餘方程 ti m mi 1 mod mi 的最小非負整數解 則有乙個解 x ai m mi ...