lambda n:[k/n for k in range(n*n)if k/n*k%n==1]
Hãy thử trực tuyến!
Lý lịch
Hãy xem xét vòng . Mặc dù vòng này thường được xác định bằng cách sử dụng các lớp dư modulo , nhưng nó cũng có thể được coi là tập , trong đó các toán tử cộng và nhân được xác định bởi và , trong đó biểu thị phép cộng thông thường, phép nhân và toán tử modulo trên các số nguyên.n Z n = { 0 , ... , n - 1 } một + n b = ( một + b )( Zviết sai rồi, +viết sai rồi, ⋅viết sai rồi)viết sai rồiZviết sai rồi= { 0 , Hoài , n - 1 }a +viết sai rồib = ( a + b )%viết sai rồi+ ,một ⋅viết sai rồib = a ⋅ b%viết sai rồi+,⋅ và %
Hai phần tử và của được gọi là phép nhân bội lẫn nhau modulo nếu . Lưu ý rằng bất cứ khi nào .b Z n n a ⋅ n b = 1mộtbZviết sai rồiviết sai rồi1một ⋅viết sai rồib = 1%viết sai rồin > 11%n = 1n > 1
Fix và để cho thể là một nguyên tố cùng nhau của trong . Nếu cho hai phần tử và của , chúng ta có . Điều này ngụ ý rằng và chúng tôi theo dõi , nghĩa là chia đều . Vì chia sẻ không có ước số nguyên tố với , điều này có nghĩa là . Cuối cùng, bởi vìa n Z n a ⋅ n x = a ⋅ n y x y Z n a ⋅ xn > 1mộtnZna⋅nx=a⋅nyxyZnmột ⋅ ( x - y )a⋅x%n=a⋅y%nn | một ⋅ ( x - y ) n một ⋅ ( x - y ) n một n | x - y - n < x - y < n x = y một ⋅ n 0 , ... , một ⋅ n ( n - 1 ) Z n Z n n 1 b Za⋅(x−y)%n=a⋅x%n−a⋅y%n=0n∣a⋅(x−y)na⋅(x−y)nan∣x−y−n<x−y<n , chúng tôi kết luận rằng . Điều này cho thấy các sản phẩm là tất cả các yếu tố khác nhau của . Vì có chính xác phần tử, nên một (và chính xác một) trong số các sản phẩm đó phải bằng , nghĩa là, có một duy nhất trong sao cho .x=ya⋅n0,…,a⋅n(n−1)ZnZnn1 b a ⋅ n b = 1Zna⋅nb=1
Ngược lại, sửa chữa và để cho thể là một yếu tố của đó là không nguyên tố cùng nhau với . Trong trường hợp này, có một số nguyên tố sao cho và . Nếu thừa nhận một nghịch đảo modulo nhân giống (chúng ta hãy gọi nó là ), chúng tôi có mà , có nghĩa là và do đó, , vì vậy . Vì , chúng tôi theo đóa Z n n p p ∣ a p ∣ n a n b a ⋅ n b = 1 a ⋅ bn>1aZnnpp∣ap∣nanba⋅nb=1( a ⋅ b - 1 )a⋅b%n=1n ∣ a ⋅ b - 1 p ∣ a p ∣ a ⋅ b p ∣ n p ∣ a ⋅ b - 1 p ∣ ( a ⋅ b ) - ( a ⋅ b - 1 ) = 1 p(a⋅b−1)%n=a⋅b%n−1=0n∣a⋅b−1p∣ap∣a⋅b . Mặt khác, vì , chúng tôi cũng theo . Theo cách này, , điều này mâu thuẫn với giả định rằng là số nguyên tố.p∣np∣a⋅b−1p∣(a⋅b)−(a⋅b−1)=1p
Điều này chứng tỏ rằng các tuyên bố sau là tương đương khi .n>1
na và là nguyên tố cùng nhau.n
na thừa nhận một nghịch đảo modulo .n
na thừa nhận một độc đáo nghịch đảo modulo .n
Làm thế nào nó hoạt động
Đối với mỗi cặp số nguyên và trong , số nguyên là duy nhất; trong thực tế, và là thương số và phần còn lại của chia cho , tức là, với , chúng ta có thể phục hồi và , trong đó biểu thị phép chia số nguyên . Cuối cùng, vì và , là một phần tử của ; thực tế, .b Z n k : = a ⋅ n + b a b k n k a = k / n b = kabZnk:=a⋅n+babknka=k/n/ a ≤ n - 1 b ≤ n - 1 k Z n 2 k ≤ ( n - 1 ) ⋅ n + ( n - 1 ) = n 2 - 1b=k%n/a≤n−1b≤n−1kZn2k≤(n−1)⋅n+(n−1)=n2−1
Như đã lưu ý ở trên, nếu và là nguyên tố cùng nhau, sẽ có một duy nhất sao cho , tức là sẽ có một duy nhất sao cho và , do đó danh sách được tạo ra sẽ chứa đúng một lần.n b a ⋅ banbk k / n = a k / n ⋅ ka⋅b%n=1kk/n=aak/n⋅k%n=(k/n)⋅(k%n)%n=1a
Ngược lại, nếu và không phải là nguyên tố cùng nhau, điều kiện sẽ sai với tất cả các giá trị của sao cho , vì vậy danh sách được tạo sẽ không chứa .n k / n ⋅ kank a = k / n ak/n⋅k%n=1ka=k/na
Điều này chứng tỏ rằng danh sách lambda trả về sẽ chứa tất cả các số nguyên tố của trong chính xác một lần.Z nnZn
1\n3\n
) có được tính là đầu ra hợp lệ không?