चुनौती
नीचे दिए गए प्राइम नंबर खोजने के लिए सुंदरम छलनी को लागू करें n। एक इनपुट पूर्णांक लें n, और नीचे की प्रमुख संख्याओं को आउटपुट करें n। आप मान सकते हैं कि nहमेशा एक मिलियन से कम या बराबर होगा।
चलनी
से पूर्णांकों की एक सूची के साथ शुरू
1करने के लिएn।उन सभी नंबरों को निकालें जो फॉर्म
i + j + 2ijमें हैं:iऔरjसे कम हैंn।jहमेशा से बड़ा या बराबर होता हैi, जो इससे अधिक या उसके बराबर होता है1।
i + j + 2ijसे कम या बराबर हैn
शेष संख्याओं को गुणा करें
2, और जोड़ें1।
यह सभी अभाज्य संख्याओं को छोड़ देगा (सिवाय 2, जो आपके आउटपुट में शामिल किया जाना चाहिए) से कम 2n + 2।
यहाँ छलनी का एक एनीमेशन है जिसका उपयोग नीचे दिए गए प्राइम खोजने के लिए किया जा रहा है 202।

उत्पादन
आपका उत्पादन हर मुख्य पूर्णांक ≤ n(आरोही क्रम में) के बाद होना चाहिए :
2
3
5
कहाँ nहै 5।
उदाहरण
> 10
2
3
5
7
> 30
2
3
5
7
11
13
17
19
23
29
इनपुट्स द्वारा निरूपित किए जाते हैं >।
(i,j)साथ i<=jहै, लेकिन परिणाम अगर हम इस आवश्यकता को नजरअंदाज नहीं बदलता है। क्या हम बाइट्स बचाने के लिए ऐसा कर सकते हैं?
i <= j। यह सिर्फ यह है कि छलनी कैसे काम करता है। तो हाँ, आप i <= jअपने कोड में छोड़ सकते हैं । @ एक्सनोर
2n+1) जो कि फॉर्म के नहीं हैं 2(i + j + 2ij)+1- क्या हम इस संपत्ति को सीधे संभावित अपराधों पर परीक्षण कर सकते हैं या क्या हमारे कोड को किसी बिंदु पर 2 प्लस 1 करना होगा? ?
nइस बात से थोड़ा भ्रमित हूं कि पूरी बात क्या है। विधि विवरण में, यह कहता है कि यह सभी प्राइम तक उत्पन्न करेगा 2 * n + 2। लेकिन इनपुट / आउटपुट विवरण में, यह कहता है कि इनपुट है n, और आउटपुट सभी तक पहुंच जाता है n। तो क्या हम सभी primes को उत्पन्न करने के लिए विधि को लागू करने वाले हैं 2 * n + 2, और फिर nआउटपुट से बड़े लोगों को छोड़ देते हैं ? या हमें nइनपुट से विधि विवरण में गणना करनी चाहिए n?
n=30आउटपुट में 29 गायब है।