lambda n:[k/n for k in range(n*n)if k/n*k%n==1]
Provalo online!
sfondo
Considera l' anello . Sebbene questo anello sia generalmente definito usando le classi di residui modulo , può anche essere pensato come l'insieme , dove gli operatori di addizione e moltiplicazione sono definiti da e , dove indicano la solita aggiunta, moltiplicazione e operatori modulo sugli interi.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 %
Due elementi e di sono chiamati reciproci inversi moltiplicativi modulo se . Si noti che ogni volta che .b Z n n a ⋅ n b = 1abZnn1a⋅nb=1%nn > 11%n=1n>1
Fix e sia essere un coprimi di in . Se per due elementi e di , abbiamo che . Ciò implica che , e seguiamo che , cioè divide modo uniforme. Poiché non condivide i divisori primi con , ciò significa che . Finalmente, perchéa nn>1an a ⋅ n x = a ⋅ n y x y Z n a ⋅ xZna⋅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 , concludiamo che . Ciò mostra che i prodotti sono tutti elementi diversi di . Dato che ha esattamente elementi, uno (e esattamente uno) di quei prodotti deve essere uguale a , cioè c'è un unico in tale che .x=ya⋅n0,…,a⋅n(n−1)ZnZnn1 b a ⋅ n b = 1Zna⋅nb=1
Viceversa, fix e lascia essere un elemento di che non primi con . In questo caso, esiste una principale tale che e . Se ammettesse un modulo inverso moltiplicativo (chiamiamolo ), avremmo che , il che significa che e, quindi, , quindi . Da , seguiamo quelloa 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 . D'altra parte, poiché , seguiamo anche che . In questo modo, , che contraddice l'assunto che sia un numero primo.p∣np∣a⋅b−1p∣(a⋅b)−(a⋅b−1)=1p
Ciò dimostra che le seguenti affermazioni sono equivalenti quando .n>1
Come funziona
Per ogni coppia di interi e in , il numero intero è unico; infatti, e sono quoziente e resto diviso per , cioè, dato , possiamo recuperare e , dove denota interi divisione. Infine, poiché e , è un elemento di ; infatti, .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
Come notato sopra, se e sono coprime, ci sarà un unico tale che , cioè ci sarà un unico tale che e , per cui l'elenco generato conterrà esattamente una volta.n b a ⋅ banbk k / n = a k / n ⋅ ka⋅b%n=1kk/n=aak/n⋅k%n=(k/n)⋅(k%n)%n=1a
Al contrario, se e non sono coprime, la condizione sarà falsa per tutti i valori di tale che , quindi l'elenco generato non conterrà .n k / n ⋅ kank a = k / n ak/n⋅k%n=1ka=k/na
Ciò dimostra che l'elenco restituito da lambda conterrà tutti i coprimi di in esattamente una volta.Z nnZn
1\n3\n
) Contano come output valido?