चुनौती
नीचे दिए गए प्राइम नंबर खोजने के लिए सुंदरम छलनी को लागू करें 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 गायब है।