lambda n:[k/n for k in range(n*n)if k/n*k%n==1]
Pruébalo en línea!
Antecedentes
Considere el anillo . Si bien este anillo generalmente se define usando las clases de residuos módulo , también se puede considerar como el conjunto , donde los operadores de suma y multiplicación se definen por y , donde , significan la adición habitual, multiplicación y operadores de módulo sobre los enteros.n Z n = { 0 , … , n - 1 } a + n b = ( a + b )(Zn,+n,⋅n)nZn={0,…,n−1}a ⋅ n b = a ⋅ ba+nb=(a+b)%n+ ,a⋅nb=a⋅b%n+,⋅, and %
Dos elementos y de se llaman inversos multiplicativos mutuos módulo si . Tenga en cuenta que siempre que .b Z n n a ⋅ n b = 1abZnn1a⋅nb=1%nn > 11%n=1n>1
Arregle y deje que sea un coprimo de en . Si para dos elementos e de , tenemos que . Esto implica que , y seguimos que , es decir, divide manera uniforme. Como no comparte divisores primos con , esto significa que . Finalmente porquea 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 ) n 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 Za⋅(x−y)%n=a⋅x%n−a⋅y%n=0n∣a⋅(x−y)na⋅(x−y)nan∣x−y−n<x−y<n , concluimos que . Esto muestra que los productos son todos elementos diferentes de . Como tiene exactamente elementos, uno (y exactamente uno) de esos productos debe ser igual a , es decir, hay una única en tal que .x=ya⋅n0,…,a⋅n(n−1)ZnZnn1 b a ⋅ n b = 1Zna⋅nb=1
Por el contrario, arregle y deje que sea un elemento de que no sea coprimo para . En este caso, hay un primer tal que y . Si admitidos un módulo inverso multiplicativo (llamémoslo ), tendríamos que , lo que significa que y, por lo tanto, , entonces . Desde , seguimos quea 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 . Por otro lado, desde , también seguimos que . De esta manera, , lo que contradice la suposición de que es un número primo.p∣np∣a⋅b−1p∣(a⋅b)−(a⋅b−1)=1p
Esto demuestra que las siguientes afirmaciones son equivalentes cuando .n>1
na y son primos entre sí.n
na admite un módulo inverso multiplicativo .n
na admite un módulo inverso multiplicativo único .n
Cómo funciona
Para cada par de enteros y en , el entero es único; de hecho, y son cociente y el resto de dividido por , es decir, dado , podemos recuperar y , donde denota enteros división. Finalmente, dado que y , es un elemento de ; de hecho, .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
Como se ha señalado anteriormente, si y son primos entre sí, no habrá un único de tal manera que , es decir, habrá un único tal que y , por lo que la lista generada contendrá exactamente una vez.n b a ⋅ banba⋅b%n=1kk/n=ak/n⋅k%n=(k/n)⋅(k%n)%n=1a
A la inversa, si y son no primos entre sí, la condición será falsa para todos los valores de tal que , por lo que la lista generada será no contener .ank/n⋅k%n=1ka=k/na
Esto prueba que la lista que devuelve el lambda contendrá todos los coprimes de en exactamente una vez.Z nnZn
1\n3\n
. Ej. ) Cuentan como salida válida?