परिचय / पृष्ठभूमि
क्रिप्टो चैट में एक हालिया चर्चा में मुझे फ़र्मेट प्राइमलिटी टेस्ट और कारमाइकल नंबरों के साथ चर्चा / मदद करने के लिए चुनौती दी गई थी । यह परीक्षण उस आधार पर आधारित है जो हमेशा primes के लिए आयोजित होगा , लेकिन हमेशा कंपोजिट के लिए नहीं। एक नंबर है जिसके लिए आप: अब एक कारमाइकल संख्या अनिवार्य रूप से फर्मेट के परीक्षण सबसे खराब दुश्मन है करने के लिए है लेने नहीं सह रूढ़ साथ रहने के लिए प्राप्त करने के लिए । अब यदि सह-प्रधान नहीं है, तो आपको अनिवार्य रूप से एक गैर-तुच्छ कारक मिलाa^(p-1) mod p==1
p
a
p
a^(p-1) mod p!=1
a
p
और जैसा कि हम सभी जानते हैं कि फैक्टरिंग काफी कठिन हो सकती है। खासकर यदि सभी कारक पर्याप्त रूप से बड़े हैं। अब आप महसूस कर सकते हैं कि फ़र्मेट टेस्ट का उपयोग अक्सर अभ्यास में क्यों नहीं किया जाता है (अच्छी तरह से बेहतर एल्गोरिदम हैं), ऐसा इसलिए है क्योंकि ऐसे नंबर हैं जिनके लिए आपको एक डिफेंडर के रूप में (सुरक्षा के संदर्भ में) एक समान कार्य करना होगा एक हमलावर (अर्थात् कारक संख्या)।
तो अब जब हम जानते हैं कि ये संख्या कुछ आकर्षक क्यों है, तो हम उन्हें कम से कम संभव तरीके से उत्पन्न करने जा रहे हैं, इसलिए यदि हम कभी भी आवश्यकता हो तो हम केवल कोड को याद कर सकते हैं!
कारमाइकल नंबर को OEIS पर A002997 के रूप में भी जाना जाता है ।
वहाँ एक है संबंधित चुनौती पहले से ही है, लेकिन वहाँ से प्रविष्टियां क्योंकि वे के रूप में आकार का विरोध करने की गति के लिए अनुकूलित कर रहे हैं यहाँ प्रतिस्पर्धी नहीं हैं। उलटे दिशा के लिए एक ही तर्क है, यहां प्रविष्टियां आकार के पक्ष में गति के खिलाफ व्यापार-नापसंद होने की संभावना है।
विशिष्टता
इनपुट
यह एक मानक है अनुक्रमचुनौती है, इसलिए आप n
इनपुट के रूप में एक सकारात्मक या गैर-नकारात्मक पूर्णांक लेते हैं । n
जैसा कि आप चाहते हैं 0- या 1-अनुक्रमित हो सकता है (कृपया संकेत दें)।
उत्पादन
जैसा कि आप पसंद करते हैं (कृपया संकेत दें) आपका आउटपुट या तो n
-th कार्मिकेल नंबर या पहला n
कार्मिकेल नंबर होगा।
विशिष्टता
पूर्णांक x
एक कारमाइकल नंबर है, यदि और केवल अगर x
समग्र है और सभी पूर्णांकों के y
साथ gcd(x,y)=1
, तो यह माना जाता है y^(x-1) mod x==1
।
किसी जीत?
ये है कोड गोल्फ, तो बाइट जीत में सबसे छोटा कोड!
मानक IO और लूपहोले नियम लागू होते हैं।
परीक्षण के मामलों
पहले कुछ कार्मिकेल नंबर हैं:
561,1105,1729,2465,2821,6601,8911,10585,15841,
29341,41041,46657,52633,62745,63973,75361,101101,
115921,126217,162401,172081,188461,252601,278545,
294409,314821,334153,340561,399001,410041,449065,
488881,512461