आपने गैराज में लगी एक सेल से बेतरतीब कंप्यूटर पुर्ज़ों का बड़ा डिब्बा खरीदा। अब आप इन पुर्ज़ों को जोड़कर अपने लिए कस्टम कंप्यूटर बनाने लगे हैं।
आप जानना चाहते हैं कि पुर्ज़ों के अलग-अलग जोड़ मिलकर कैसा प्रदर्शन देते हैं। इसलिए आपने अपना खुद का बेंचमार्किंग प्रोग्राम बनाने का फैसला किया, ताकि पता चले कि आपके कंप्यूटरों का प्रदर्शन एक-दूसरे के मुकाबले कैसा है। इसके लिए आपने मशहूर "एराटोस्थनीज़ की छलनी" एल्गोरिदम चुना। यह बहुत पुराना एल्गोरिदम है, लेकिन यह आपके कंप्यूटरों को उनकी सीमा तक परख लेगा।
आपको एक प्रोग्राम बनाना है जो एराटोस्थनीज़ की छलनी का एल्गोरिदम लागू करके किसी दी गई संख्या से छोटी या उसके बराबर की सभी अभाज्य संख्याएँ ढूँढ निकाले।
अभाज्य संख्या वह संख्या होती है जो 1 से बड़ी है और सिर्फ 1 और खुद से विभाजित होती है। जैसे 2, 3, 5, 7, 11 और 13 अभाज्य संख्याएँ हैं। इसके उलट, 6 अभाज्य संख्या नहीं है, क्योंकि वह सिर्फ 1 और खुद से ही नहीं, बल्कि 2 और 3 से भी विभाजित होती है।
एराटोस्थनीज़ की छलनी का उपयोग करने के लिए सबसे पहले आप 2 और अपनी दी गई संख्या के बीच की सभी संख्याओं की एक सूची बनाइए। इसके बाद नीचे दिए गए चरण बार-बार दोहराइए:
इन चरणों को तब तक दोहराते रहिए, जब तक आपकी सूची की हर संख्या पर काम पूरा न हो जाए। अंत में जिन संख्याओं पर चिह्न नहीं लगा है, वे सभी अभाज्य होती हैं।
टेस्ट यह नहीं देखते कि आपने यह एल्गोरिदम लागू किया है या नहीं, वे सिर्फ यह देखते हैं कि आपने अभाज्य संख्याओं की सही सूची बनाई है या नहीं। यह जाँचने के लिए कि आप छलनी सही तरीके से लागू कर रहे हैं, एक अच्छा पहला टेस्ट यह होगा कि आप देखें कि आप भाग या शेषफल की संक्रियाओं का उपयोग नहीं कर रहे हैं।
मान लीजिए आप 10 से छोटी या उसके बराबर की अभाज्य संख्याएँ ढूँढ रहे हैं।
आपने सभी संख्याओं को देख लिया और पाया कि 2, 3, 5 और 7 पर अभी भी कोई चिह्न नहीं है, यानी ये 10 से छोटी या उसके बराबर की अभाज्य संख्याएँ हैं।
अपने हल को पठनीय बनाने के लिए रिफैक्टरिंग टूल की मदद से किसी भी अर्थपूर्ण उप-क्रिया को अलग निकालने की कोशिश कीजिए। अच्छे नाम वाले अस्थायी वेरिएबलो के इस्तेमाल की चिंता न कीजिए।
Exercism पर साइन अप कीजिए और Pharo को 50 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
हम एराटोस्थनीज़ की छलनी के कई अलग-अलग तरीके देखते हैं। शुरुआत नेस्टेड लूप और लेज़ी इवैल्यूएशन से करते हैं, फिर सेट की ओर बढ़ते हैं और अंत में रिकर्शन देखते हैं।