lambda n:[k/n for k in range(n*n)if k/n*k%n==1]
Essayez-le en ligne!
Contexte
Considérons l' anneau . Bien que cet anneau soit généralement défini à l'aide de classes de résidus modulo n , il peut également être considéré comme l'ensemble Z n = { 0 , … , n - 1 } , où les opérateurs d'addition et de multiplication sont définis par a + n b = ( a + b )(Zn,+n,⋅n)nZn={0,…,n−1} et, oùdésignent les opérateurs habituels d'addition, de multiplication et de modulo sur les entiers.a+nb=(a+b)%n+ ,a⋅nb=a⋅b%n+,⋅, and %
Deux éléments et de sont appelés inverses multiplicatifs mutuels modulo si . Notez que lorsque .abZnna⋅nb=1%n1%n=1n>1
Fixez et laissez être un coprime de n dans Z n . Si un ⋅ n x = a ⋅ n y pour deux éléments x et y de Z n , nous avons que un ⋅ xan>1anZna⋅nx=a⋅nyxyZn . Cela implique que un ⋅ ( x - y )a⋅x%n=a⋅y%n , et on suit que n | a ⋅ ( x - y ) ,savoir, n divise une ⋅ ( x - y ) uniformément. Puisque n ne partage pas les diviseurs premiers avec a , cela signifie que n ∣ x - y . Enfin, comme - n < x - y < n , nous concluons que x = y . Cela montre que les produits d' une ⋅a ⋅ ( x - y)%n = a ⋅ x%n - a ⋅ y%n = 0n ∣ a ⋅ ( x - y)na ⋅ ( x - y)nunen ∣ x - y- n < x - y< nx = y sont tous des éléments différents de Z n . Puisque Z n a exactement n éléments, un (et exactement un) de ces produits doit être égal à 1 , c’est-à-dire qu’il existe ununique b dans Z n tel que a ⋅ n b = 1 .un ⋅n0 , ... , a ⋅n( n - 1 )ZnZnn1 bZnun ⋅nb = 1
A l' inverse, fix et laisser un être un élément de Z n qui est pas coprime à n . Dans ce cas, il existe un nombre premier p tel que p ∣ a et p ∣ n . Si a admettait un modulo inverse multiplicatif n (appelons-le b ), nous aurions que a ⋅ n b = 1 , ce qui signifie que a ⋅ bn > 1uneZnnpp∣ap∣nanba⋅nb=1 et donc ( a ⋅ b - 1 )a⋅b%n=1 , donc n ∣ a ⋅ b - 1 . Depuis p ∣ a , on suit que p ∣ a ⋅ b . D'autre part, depuis p ∣ n , nous suivons également celui de p ∣ a ⋅ b - 1 . De cette façon, p ∣ ( a ⋅ b ) - ( a ⋅ b - 1 ) = 1(a⋅b−1)%n=a⋅b%n−1=0n∣a⋅b−1p∣ap∣a⋅bp∣np∣a⋅b−1p∣(a⋅b)−(a⋅b−1)=1, ce qui contredit l'hypothèse selon laquelle est un nombre premier.p
Cela prouve que les déclarations suivantes sont équivalentes lorsque .n>1
Comment ça fonctionne
Pour chaque couple d'entiers et b dans Z n , l'entier k : = a ⋅ n + b est unique; en fait, a et b sont des quotients et le reste de k divisé par n , c'est-à-dire, étant donné k , on peut récupérer a = k / n et b = kabZnk:=a⋅n+babknka=k/n , où / désigne ladivisionentière. Enfin, puisque a ≤ n - 1 et b ≤ n - 1 , k est un élément de Z n 2 ; en fait, k ≤ ( n - 1 ) ⋅ n + ( n - 1 ) = n deux - 1 .b=k%n/a≤n−1b≤n−1kZn2k≤(n−1)⋅n+(n−1)=n2−1
Comme indiqué ci-dessus, si et n sont des coprimes, il y aura un unique b tel que a ⋅ banb , c'est-à-dire qu'il y aura un unique k tel que k / n = a et k / n ⋅ ka⋅b%n=1kk/n=a , la liste produite contiendra une seule fois.k/n⋅k%n=(k/n)⋅(k%n)%n=1a
A l' inverse, si et n sont pas coprime, la condition k / n ⋅ kan sera faux pour toutes les valeurs de k telles que a = k / n , de sorte que la liste généréenecontiendrapas a .k/n⋅k%n=1ka=k/na
Cela prouve que la liste des lambda déclarations contiennent tous de » Les premiers entre eux dans Z n exactement une fois.nZn
1\n3\n
) comptent-elles comme une sortie valide?