lambda n:[k/n for k in range(n*n)if k/n*k%n==1]
ลองออนไลน์!
พื้นหลัง
พิจารณาแหวน ) ในขณะที่แหวนวงนี้มักจะถูกกำหนดโดยใช้การเรียนตกค้าง modulo nก็ยังสามารถจะคิดว่าเป็นชุด Z n = { 0 , ... , n - 1 }ที่บวกและการคูณผู้ประกอบการจะถูกกำหนดโดย + n(Zn,+n,⋅n)nZn={0,…,n−1}และ ⋅a+nb=(a+b)%n , ที่ + ,a⋅nb=a⋅b%nแสดงการบวก, การคูณและโมดูโลตามปกติของจำนวนเต็ม+,⋅, and %
สององค์ประกอบและbของZ nถูกเรียกว่าmultiplicative inverses แบบโมดูโลnถ้าa ⋅ n b = 1abZnn . สังเกตว่า 1a⋅nb=1%nเมื่อใดก็ตามที่ n > 11%n=1n>1
แก้ไขและให้เป็น coprime ของnในZ n ถ้าn>1anZnสำหรับสององค์ประกอบ xและ yของ Z nเรามี a ⋅ xa⋅nx=a⋅nyxyZn . นี่ก็หมายความว่า ⋅ ( x - Y )a⋅x%n=a⋅y%nและเราทำตามนั้น n ∣ a ⋅ ( x - y )คือ nหาร a ⋅ ( x - y )ให้เท่ากัน ตั้งแต่ nหุ้นไม่มี divisors สำคัญกับนี้หมายความว่า n | x - Y สุดท้ายเพราะ - n < x - Y < nเราสรุปได้ว่า x = Y นี่แสดงว่าผลิตภัณฑ์ a aa⋅(x−y)%n=a⋅x%n−a⋅y%n=0n∣a⋅(x−y)na⋅(x−y)nan∣x−y−n<x−y<nx=yเป็นองค์ประกอบที่แตกต่างกันทั้งหมดของ Z n ตั้งแต่ Z nมีตรงคือมีที่ไม่ซ้ำกันขใน Z nดังกล่าวว่า ⋅ n B = 1a⋅n0,…,a⋅n(n−1)ZnZnองค์ประกอบ nหนึ่งรายการ (และอีกหนึ่งรายการ) ของผลิตภัณฑ์เหล่านั้นจะต้องเท่ากับ 1n1 bZna⋅nb=1
ตรงกันข้ามแก้ไขและให้เป็นองค์ประกอบของZ nที่ไม่ coprime เพื่อn ในกรณีนี้มีความสำคัญต่อดังกล่าวที่หน้า|และพี| n หากn>1aZnnpp∣ap∣naยอมรับว่าอินเวอร์สการคูณแบบโมดูโล (เรียกมันว่าb ) เราจะได้a ⋅ n b = 1ซึ่งหมายความว่าa ⋅ bnba⋅nb=1และดังนั้น ( a ⋅ b - 1 )a⋅b%n=1ดังนั้น n | ⋅ ข- 1 ตั้งแต่หน้า|เราทำตามที่หน้า| ⋅ข ในทางกลับกันตั้งแต่หน้า| nเรายังทำตามที่หน้า| ⋅ ข- 1 วิธีนี้ 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ซึ่งขัดแย้งกับสมมติฐานที่ว่าเป็นจำนวนเฉพาะp
นี้พิสูจน์ให้เห็นว่างบดังต่อไปนี้จะเทียบเท่าเมื่อ 1n>1
มันทำงานอย่างไร
สำหรับคู่ของจำนวนเต็มแต่ละและขในZ n , จำนวนเต็มk : = ⋅ n + Bจะไม่ซ้ำกัน; ในความเป็นจริงaและbเป็นความฉลาดทางและส่วนที่เหลือของkหารด้วยnนั่นคือให้kเราสามารถกู้a = k / nและb = kabZnk:=a⋅n+babknka=k/n , โดยที่ /หมายถึงการหารจำนวนเต็ม สุดท้ายตั้งแต่ ≤ n - 1และข≤ n - 1 , kเป็นองค์ประกอบของ Z n 2 ; อันที่จริง, k ≤ ( n - 1 ) ⋅ n + ( nb=k%n/a≤n−1b≤n−1kZn2 1k≤(n−1)⋅n+(n−1)=n2−1
ตามที่ระบุไว้ข้างต้นถ้าaและเป็น coprime จะมีb ที่ไม่ซ้ำกันเช่นa ⋅ bnbคือกล่าวคือจะมีค่าเฉพาะ kซึ่ง k / na⋅b%n=1kและ k / n ⋅ kk/n=aดังนั้นรายการที่สร้างขึ้นจะมีครั้งว่าk/n⋅k%n=(k/n)⋅(k%n)%n=1a
ตรงกันข้ามถ้าและnเป็นไม่ได้an coprime สภาพจะเป็นเท็จสำหรับค่าทั้งหมดของ kซึ่ง a = k / nk/n⋅k%n=1ka=k/nเพื่อให้รายการที่สร้างขึ้นจะไม่ได้มีa
นี่เป็นการพิสูจน์ว่ารายการแลมบ์ดาที่ส่งคืนจะประกอบด้วยcoprimes ทั้งหมดของในZnครั้งว่าZn
1\n3\n
) นับเป็นเอาต์พุตที่ถูกต้องหรือไม่?