गोल्फस्क्रिप्ट (23 वर्ण)
{:^((1${\.**2^?%}+*}:f;
गैर-मौजूद व्युत्क्रम के लिए प्रहरी परिणाम है 0
।
यह यूलर प्रमेय का एक सरल अनुप्रयोग है । , इसलिएxφ(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;
मैं दूसरे दृष्टिकोण पर काम कर रहा हूं, लेकिन प्रहरी अधिक कठिन है।
मुख्य अवलोकन यह है कि हम उलटा बिट का निर्माण बिट द्वारा कर सकते हैं: यदि तो x y ∈ {xy≡1(mod2k−1) , और यदि x विषम है तो हमारे पास x (xy∈{1,1+2k−1}(mod2k)x । (यदि आप आश्वस्त नहीं हैं, तो दो मामलों की अलग से जाँच करें)। इसलिए हम किसी भी उपयुक्त आधार मामले में शुरू करने और परिवर्तन लागू कर सकते हैं y ' = (x(y+xy−1)≡1(mod2k)y′=(x+1)y−1
0x≡1(mod20)
x(1−(x+1)nx)≡1(mod2n)
जहां प्रतिलोम एक ज्यामितीय अनुक्रम का योग है। मैंने खरगोश-आउट-ऑफ-द-हेट प्रभाव से बचने के लिए व्युत्पत्ति दिखाई है: इस अभिव्यक्ति को देखते हुए, यह देखना आसान है कि (दिया गया है कि ब्रैकेटेड मान एक पूर्णांक है, जो पूर्णांक के योग के रूप में इसके व्युत्पत्ति से आता है। अनुक्रम) बाईं ओर उत्पाद सही समतुल्यता वर्ग में होना चाहिए यदिx+1
यह 19-चार फ़ंक्शन देता है
{1$)1$?@/~)2@?%}:f;
x भी है। एक संभावित दिलचस्प विकल्प जो मैंने पाया है वह x&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;