GolfScript (23 ตัวอักษร)
{:^((1${\.**2^?%}+*}:f;
0
ผลแมวมองหาผกผันไม่ได้มีอยู่คือ
นี้เป็นโปรแกรมที่เรียบง่ายของทฤษฎีบทออยเลอร์ ดังนั้น x - 1 ≡ x 2 n - 1 - 1xφ(2n)≡1(mod2n)x−1≡x2n−1−1(mod2n)
น่าเสียดายที่มันค่อนข้างใหญ่เกินกว่าจะเป็นเลขชี้กำลังในการคำนวณโดยตรงดังนั้นเราต้องใช้การวนซ้ำและทำการลดแบบแยกส่วนภายในวง ขั้นตอนซ้ำคือและเรามีตัวเลือกฐานกรณี: ทั้งที่มีx2k−1=(x2k−1−1)2×xk=1
{1\:^(@{\.**2^?%}+*}:f;
หรือk=2
กับ
{:^((1${\.**2^?%}+*}:f;
ฉันกำลังทำงานในแนวทางอื่น แต่แมวมองนั้นยากกว่า
การสังเกตที่สำคัญคือเราสามารถสร้างสิ่งที่ตรงกันข้ามได้ทีละนิด: ถ้าxy≡1(mod2k−1)xy∈{1,1+2k−1}(mod2k)xx(y+xy−1)≡1(mod2k)y′=(x+1)y−1
0x≡1(mod20)
x(1−(x+1)nx)≡1(mod2n)
x+1
นั่นให้ฟังก์ชัน 19-char
{1$)1$?@/~)2@?%}:f;
xx&1
1
{1$.1&+1$?@/~)2@?%}:f;
02n−1
01−(x+1)n1−1n
{1$.1&*)1$?@/~)2@?%}:f;
nn x f
{..1&*)2$?\/~)2@?%}:f;