lambda n:[k/n for k in range(n*n)if k/n*k%n==1]
Попробуйте онлайн!
Фон
Рассмотрим кольцо . Хотя это кольцо обычно определяется с использованием классов вычетов по модулю , его также можно рассматривать как множество , где операторы сложения и умножения определяются и , где обозначают обычное добавление, умножение и операторы по модулю над целыми числами.n Z n = { 0 , … , n - 1 } a + n b = ( a + b )( ZN, +N, ⋅N)NZN= { 0 , … , n - 1 }a ⋅ n b = a ⋅ b+Nб = ( а + б )%N+ ,⋅Nb = a ⋅ b%N+ ,⋅ и %
Два элемента и в называются взаимными мультипликативными инверсиями по модулю если . Обратите внимание, что всякий раз, когда .b Z n n a ⋅ n b = 1abZnn1a⋅nb=1%nn > 11%n=1n>1
Зафиксируем и пусть будет взаимно простым в . Если для двух элементов и из , имеем . Это означает, что , и мы следуем этому , т. е. делит равномерно. Поскольку делит простых делителей с , это означает, что . Наконец, потому чтоa 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 , мы заключаем, что . Это показывает, что произведения являются различными элементами . Так имеет ровно элементов, один (и ровно один) из этих продуктов должна быть равна , то есть, есть уникальный в таким образом, что .x=ya⋅n0,…,a⋅n(n−1)ZnZnn1 b a ⋅ n b = 1Zna⋅nb=1
И наоборот, зафиксируем и пусть будет элементом который не взаимно прост с . В этом случае существует такое простое число , что и . Если бы допускал мультипликативный обратный по модулю (назовем это ), мы бы имели , что означает, что и, следовательно, , поэтому . Так как , мы следуем этомуZ п п р р | р | п п б в ⋅ п Ь = 1 в ⋅ бn>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 . С другой стороны, поскольку , мы также следуем тому, что . Таким образом, , что противоречит предположению, что - простое число.p∣np∣a⋅b−1p∣(a⋅b)−(a⋅b−1)=1p
Это доказывает, что следующие утверждения эквивалентны, когда .n>1
Как это устроено
Для каждой пары целых чисел и в целое число уникально; на самом деле, и являются частными, а остаток от делится на , т.е., учитывая , мы можем восстановить и , где обозначает целочисленное деление. Наконец, так как и , является элементом ; фактически .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
Как отмечено выше, если и взаимно просты, будет уникальный такой что , т. Е. Будет уникальный такой, что и , так что генерируется список будет содержать ровно один раз.n b a ⋅ banbk k / n = a k / n ⋅ ka⋅b%n=1kk/n=ak/n⋅k%n=(k/n)⋅(k%n)%n=1a
И наоборот, если и являются не взаимно просты, то условие будет ложным для всех значений , таких , что , поэтому сгенерированный список будет не содержать .н к / н ⋅ кank a = k / n ak/n⋅k%n=1ka=k/na
Это доказывает, что список, который возвращает лямбда, будет содержать все взаимно чисел в ровно один раз.Z nnZn
1\n3\n
) допустимым выводом?