यहाँ और यहाँ प्रासंगिक लिंक , लेकिन यहाँ संक्षिप्त संस्करण है:
आपके पास दो पूर्णांक a
और b
नकारात्मक अनंत और अनंत के बीच इनपुट है (हालांकि यदि आवश्यक हो, तो मैं सीमा को सीमित कर सकता हूं, लेकिन फ़ंक्शन को अभी भी नकारात्मक इनपुट स्वीकार करना होगा)।
क्रोनर प्रतीक की परिभाषा
आपको (a|b)
निविष्टियाँ a
और b
कहाँ के लिए क्रोनकर प्रतीक वापस करना होगा
(a|b) = (a|p_1)^e_1 * (a|p_2)^e_2 * ... * (a|p_n)^e_n
जहाँ b = p_1^e_1 * p_2^e_2 * ... * p_n^e_n
, और p_i
और e_i
प्राइम फैक्टराइजेशन में प्रिम्स और एक्सप्लर्स हैं b
।
एक विषम प्राइम के लिए p
, (a|p)=a^((p-1)/2) (mod p)
जैसा कि यहां परिभाषित है ।
के लिए b == 2
,(n|2)={0 for n even; 1 for n odd, n=+/-1 (mod 8); -1 for n odd, n=+/-3 (mod 8)
के लिए b == -1
,(n|-1)={-1 for n<0; 1 for n>0
तो a >= b
, (a|b) == (z|b)
जहां z == a % b
। इस संपत्ति के द्वारा, और के रूप में समझाया यहाँ और यहाँ , a
की द्विघात अवशेषों है b
अगर z
है, भले ही a >= b
।
(-1|b)
= 1
यदि b == 0,1,2 (mod 4)
और -1
यदि b == 3 (mod 4)
। (0|b)
है 0
के अलावा (0|1)
जो है 1
, क्योंकि (a|1)
है हमेशा 1
और नकारात्मक के लिए a
, (-a|b) == (-1|b) * (a|b)
।
क्रॉंकर प्रतीक का -1, 0 or 1
आउटपुट हमेशा होता है , जहां आउटपुट होता 0
है a
और b
कोई भी सामान्य कारक होता है। तो b
, एक अजीब प्रधानमंत्री है (a|b) == 1
, तो a
एक है द्विघात अवशेषों आधुनिक b
, और -1
अगर है यह एक द्विघात अवशेषों नहीं है।
नियम
आपका कोड एक प्रोग्राम या एक फ़ंक्शन होना चाहिए।
इनपुट क्रम में होना चाहिए
a b
।उत्पादन या तो होना चाहिए
-1
,0
या1
।यह कोड गोल्फ है, इसलिए आपके कोड को कुशल होने की जरूरत नहीं है, बस संक्षिप्त है।
कोई बिल्ट-इन जो सीधे क्रॉंकर या संबंधित जैकोबी और लिजेंड्रे प्रतीकों की गणना नहीं करता है। अन्य बिल्ट-इन (मुख्य कारक के लिए, उदाहरण के लिए) उचित खेल हैं।
उदाहरण
>>> kronecker(1, 5)
1
>>> kronecker(3, 8)
-1
>>> kronecker(15, 22)
1
>>> kronecker(21, 7)
0
>>> kronecker(5, 31)
1
>>> kronecker(31, 5)
1
>>> kronecker(7, 19)
1
>>> kronecker(19, 7)
-1
>>> kronecker(323, 455625)
1
>>> kronecker(0, 12)
0
>>> kronecker(0, 1)
1
>>> kronecker(12, 0)
0
>>> kronecker(1, 0)
1
>>> kronecker(-1, 5)
1
>>> kronecker(1, -5)
1
>>> kronecker(-1, -5)
-1
>>> kronecker(6, 7)
-1
>>> kronecker(-1, -7)
1
>>> kronecker(-6, -7)
-1
यह एक जटिल कार्य है, इसलिए कृपया मुझे बताएं कि क्या कुछ स्पष्ट नहीं है।