lambda n:[k/n for k in range(n*n)if k/n*k%n==1]
Cobalah online!
Latar Belakang
Pertimbangkan cincin itu . Sementara cincin ini biasanya didefinisikan menggunakan modul residu modulo , ia juga dapat dianggap sebagai himpunan , di mana operator penjumlahan dan multiplikasi ditentukan oleh dan , di mana menunjukkan penambahan yang biasa, perkalian, dan operator modulo melalui bilangan bulat.n Z n( Zn, +n, ⋅n)na + n b = ( a + b )Zn= { 0 , ... , n - 1 }a ⋅ n b = a ⋅ ba +nb = ( a + b )%n+ ,a ⋅nb = a ⋅ b%n+,⋅, and %
Dua elemen dan dari disebut saling inversi multiplikatif modulo jika . Perhatikan bahwa setiap kali .aZ n n a ⋅ n b = 1bZnn1a⋅nb=1%nn > 11%n=1n>1
Fix dan membiarkan menjadi coprime dari di . Jika untuk dua elemen dan dari , kita memiliki . Ini menyiratkan bahwa , dan kami mengikuti , yaitu, membagi secara merata. Karena tidak berbagi pembagi utama dengan , ini berarti bahwa . Akhirnya, karenaa n Z n a ⋅ n x = a ⋅ n y x y Z n a ⋅ xn>1anZna⋅nx=a⋅nyxyZna ⋅ ( x - y )a⋅x%n=a⋅y%nn ∣ a ⋅ ( x - y )a⋅(x−y)%n=a⋅x%n−a⋅y%n=0n∣a⋅(x−y)a ⋅ ( x - y ) n a n ∣ x - y - n < x - y < n x = y a ⋅ n 0 , … , a ⋅ n ( n - 1 ) Z n Z n n 1 b Z n a ⋅ n b = 1na⋅(x−y)nan∣x−y−n<x−y<n , kami menyimpulkan bahwa . Ini menunjukkan bahwa produk adalah semua elemen berbeda . Karena memiliki tepat elemen, satu (dan tepat satu) dari produk tersebut harus sama dengan , yaitu, ada unik di sehingga .x=ya⋅n0,…,a⋅n(n−1)ZnZnn1 bZna⋅nb=1
Sebaliknya memperbaiki dan membiarkan menjadi unsur yang tidak coprime untuk . Dalam hal ini, ada prime sehingga dan . Jika mengaku inverse modulo perkalian (sebut saja ), kita akan memiliki yang , yang berarti bahwa dan, karena itu, , jadi . Sejak , kita ikuti itua 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 . Di sisi lain, karena , kami juga mengikuti . Dengan cara ini, , yang bertentangan dengan asumsi bahwa adalah bilangan prima.p∣np∣a⋅b−1p∣(a⋅b)−(a⋅b−1)=1p
Ini membuktikan bahwa pernyataan berikut ini setara ketika .n>1
na dan adalah koprime.n
na menerima modul invers multiplikatif .n
na mengakui modul invers multiplikatif yang unik .n
Bagaimana itu bekerja
Untuk setiap pasangan bilangan bulat dan dalam , bilangan bulat adalah unik; pada kenyataannya, dan adalah hasil bagi dan sisa dari dibagi dengan , yaitu, mengingat , kita dapat memulihkan dan , di mana menunjukkan pembagian integer . Akhirnya, karena dan , adalah elemen ; sebenarnya, .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
Seperti disebutkan di atas, jika dan adalah koprime, akan ada unik sehingga , yaitu, akan ada unik sehingga dan , sehingga daftar yang dihasilkan akan berisi tepat sekali.n b a ⋅ banbk k / n = a k / n ⋅ ka⋅b%n=1kk/n=aak/n⋅k%n=(k/n)⋅(k%n)%n=1a
Sebaliknya, jika dan yang tidak coprime, kondisi akan palsu untuk semua nilai sehingga , sehingga daftar yang dihasilkan akan tidak mengandung .n k / n ⋅ kank a = k / n ak/n⋅k%n=1ka=k/na
Ini membuktikan bahwa daftar yang dikembalikan lambda akan berisi semua coprimes di tepat sekali.Z nnZn
1\n3\n
) Dihitung sebagai output yang valid?