एराटोस्थनीज की छलनी

गणित में, एराटोस्थनीज की सीव किसी भी सीमा तक सभी अभाज्य संख्याओं की शोध के लिए प्राचीन कलन विधि है।

यह पुनरावृत्त रूप से समग्र संख्या (अर्थात, अभाज्य नहीं) के रूप में चिह्नित करता है, प्रत्येक अभाज्य संख्या के गुणकों को, प्रथम अभाज्य संख्या 2 के साथ प्रारम्भ करता है। किसी दिए गए अभाज्य के गुणकों को अंकगणित के साथ उस अभाज्य से प्रारम्भ होने वाली संख्याओं के अनुक्रम के रूप में उत्पन्न किया जाता है उनके मध्य निरंतर भिन्नता होती है जो उस अभाज्य के समान है। प्रत्येक अभाज्य द्वारा विभाज्यता के लिए प्रत्येक उम्मीदवार संख्या का क्रमिक रूप से परीक्षण करने के लिए परीक्षण प्रभाग का उपयोग करने के लिए सीव महत्वपूर्ण है। प्रत्येक अनुशोधित अभाज्य संख्याओं के सभी गुणकों को कंपोजिट के रूप में चिह्नित किया गया है, शेष अचिह्नित संख्याएं अभाज्य संख्याएं हैं।

सीव का सबसे प्रथम ज्ञात संदर्भ (कोस्किनॉन एराटोस्थेनस) अंकगणित के निकोमाचस के परिचय में, प्रारंभिक 2 समुच्चय है। सीई पुस्तक जो इसका श्रेय एराटोस्थनीज को देती है, जो कि तीसरा प्रतिशत है। ईसा पूर्व ग्रीक गणितज्ञ, चूँकि अभाज्य संख्याओं के अतिरिक्त विषम संख्याओं द्वारा सीव का वर्णन करता है।

कई अभाज्य संख्याओं में से, यह सभी छोटे अभाज्यों को शोध के सबसे कुशल उपाय है। इसका उपयोग अंकगणितीय प्रगति में अभाज्य संख्या की अनुशोधन के लिए किया जा सकता है।

अवलोकन
अभाज्य संख्या प्राकृतिक संख्या है जिसमें दो भिन्न-भिन्न प्राकृतिक संख्या विभाजक होते हैं: संख्या 1 और स्वयं है।

एराटोस्थनीज विधि द्वारा दिए गए पूर्णांक $n$ से कम या उसके समान सभी अभाज्य संख्याएँ ज्ञात करना:


 * 1) 2 से $n$ निरन्तर पूर्णांकों की सूची बनाएं : $(2, 3, 4, ..., n)$ बनाएं।
 * 2) प्रारम्भ में, $p$ समान 2, सबसे छोटी अभाज्य संख्या है।
 * 3) $2p$ से $n$ तक $p$ की वृद्धि में गिनती करके $p$ के गुणकों की गणना करें, और उन्हें सूची में चिह्नित करें (ये होंगे $2p, 3p, 4p, ...$; $p$ स्वयं को चिह्नित नहीं किया जाना चाहिए)।
 * 4) सूची में सबसे छोटी संख्या ज्ञात कीजिए जो $p$ से बड़ी नहीं है। यदि ऐसी कोई संख्या नहीं थी, तो रुकें। $p$ को अब इस नई संख्या (जो अगला अभाज्य है) के समान करें और चरण 3 से दोहराएं।
 * 5) जब एल्गोरिथम समाप्त हो जाता है, तो सूची में अंकित नहीं की गई शेष संख्याएँ n के नीचे सभी अभाज्य संख्याएँ होती हैं।

यहाँ मुख्य विचार यह है कि p को दिया गया प्रत्येक मान अभाज्य होगा, क्योंकि यदि यह सम्मिश्र होता तो इसे किसी अन्य, छोटे अभाज्य के गुणक के रूप में चिह्नित किया जाता। ध्यान दें कि कुछ संख्याओं को एक से अधिक बार चिह्नित किया जा सकता है (उदाहरण के लिए, 15 को 3 और 5 दोनों के लिए चिह्नित किया जाएगा)।

परिशोधन के रूप में, $p^{2}$ से प्रारंभ करते हुए चरण 3 में संख्याओं को चिह्नित करना पर्याप्त है, क्योंकि $p$ के सभी छोटे गुणकों को उस बिंदु पर पहले ही चिह्नित किया जा चुका होगा। इसका अर्थ है कि एल्गोरिथम को चरण 4 में समाप्त करने की अनुमति है जब $p^{2}$ से $n$ अधिक है।

परिशोधन प्रारम्भ में केवल विषम संख्याओं को सूचीबद्ध करना है, $(3, 5, ..., n)$, और चरण 3 में $2p$ की वृद्धि में गणना करें, इस प्रकार $p$ के केवल विषम गुणकों को चिह्नित करें। यह वास्तव में मूल एल्गोरिथ्म में दिखाई देता है। इसे व्हील गुणन के साथ सामान्यीकृत किया जा सकता है, प्रारंभिक सूची को केवल पहले कुछ अभाज्य संख्याओं से बनाया जाता है, न कि केवल विषमताओं से (अर्थात, संख्या 2 के साथ सह-अभाज्य), और इसी प्रकार समायोजित वृद्धि में गिनती की जाती है जिससे $p$ के केवल ऐसे गुणक हों पहले स्थान पर उन छोटे अभाज्यों के साथ सह-अभाज्य उत्पन्न होते हैं।

उदाहरण
30 से कम या 30 के समान सभी अभाज्य संख्याएँ ज्ञात करने के लिए, निम्नानुसार आगे बढ़ें।

सबसे प्रथम, 2 से 30 तक पूर्णांकों की सूची तैयार करें:

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

सूची में प्रथम नंबर 2 है; 2 की वृद्धि में 2 से गिनकर 2 के पश्चात सूची में प्रत्येक दूसरी संख्या से आगे जाएं (ये सूची में 2 के सभी गुणक होंगे):

2 3 5  7  9  11  13  15  17  19  21  23  25  27  29

सूची में 2 के पश्चात निकटतम संख्या 3 है; 3 की वृद्धि में 3 से गिनती करके 3 के पश्चात सूची में प्रत्येक तीसरे नंबर से आगे जाएं (ये सूची में 3 के सभी गुणक होंगे):

2 3 5  7  11  13  17  19  23  25  29

सूची में 3 के पश्चात जो निकटतम संख्या अभी तक नहीं निकली है वह 5 है; 5 की वृद्धि में 5 से गिनकर 5 के पश्चात सूची में प्रत्येक 5वीं संख्या से आगे जाएं (अर्थात 5 के सभी गुणक):

2 3 5  7  11  13  17  19  23  29

5 के पश्चात सूची में निकटतम संख्या 7 है जिसे अभी तक नहीं विभक्त किया गया है; निकटतम चरण 7 के पश्चात सूची में प्रत्येक 7वीं संख्या से आगे जाएं, परन्तु वे सभी इस बिंदु पर प्रथम ही पूर्व ही आगे जा चुके है, क्योंकि ये संख्याएं (14, 21, 28) भी छोटी अभाज्य संख्याओं के गुणक हैं क्योंकि 7 × 7 बड़ा एवं 30 से अधिक है। सूची में इस बिंदु पर जिन संख्याओं को नहीं विभक्त किया गया है, वे सभी 30 से नीचे की अभाज्य संख्याएँ हैं:

2 3 5 7 11 13 17 19 23 29

स्यूडोकोड
एराटोस्थनीज की सीव को स्यूडोकोड में व्यक्त किया जा सकता है, एराटोस्थनीज की सीव एल्गोरिथम इस प्रकार है: algorithm Sieve of Eratosthenes is

input: an integer n > 1.

output: all prime numbers from 2 through n. let A be an array of Boolean values, indexed by integers 2 to n,

initially all set to true. for i = 2, 3, 4, ..., not exceeding √n do if A[i] is true for j = i2, i2+i, i2+2i, i2+3i, ..., not exceeding n do set A[j] := false return all i such that A[i] is true. यह एल्गोरिद्म $n$ से अधिक नहीं सभी अभाज्य संख्याएँ उत्पन्न करता है। इसमें सामान्य अनुकूलन सम्मिलित है, जो $i^{2}$ से प्रत्येक अभाज्य $i$ के गुणकों की गणना करना प्रारंभ करना है। इस एल्गोरिथम की समय जटिलता $O(n log log n)$ है, परन्तु सरणी अद्यतन $O(1)$ ऑपरेशन है, जैसा कि सामान्यतः होता है।

खंडित सीव
जिस प्रकार सोरेनसन नोट करते हैं, एराटोस्थनीज की सीव के साथ समस्या इसके द्वारा किए जाने वाले संचालन की संख्या नहीं है, चूँकि इसकी मेमोरी आवश्यकताएं हैं। बड़े $n$ के लिए, अभाज्य संख्याओं की श्रेणी मेमोरी में फ़िट न हो; अन्य मध्यम $n$ के लिए भी, इसका सीपीयू कैश उपयोग अत्यधिक उप इष्टतम है। एल्गोरिथ्म पूर्ण सरणी $A$ के माध्यम से चलता है, संदर्भ के लगभग कोई स्थानीयता प्रदर्शित नहीं करता है।

इन समस्याओं का समाधान खंडित सीव द्वारा प्रस्तुत किया जाता है, जहां समय में सीमा के केवल कुछ भागों को सीव किया जाता है। ये 1970 के दशक से जाने जाते हैं, और निम्नानुसार कार्य करते हैं:
 * 1) 2 से $n$ तक की श्रेणी को $Δ ≤ √n$ के किसी आकार के खंडों में विभाजित करें।
 * 2) नियमित सीव का उपयोग करके प्रथम (अर्थात सबसे कम) खंड में अभाज्य संख्याएँ का परीक्षण करते है।
 * 3) निम्न में से प्रत्येक खंड के लिए, बढ़ते क्रम में, $m$ खंड का सर्वोच्च मान होने के कारण, इसमें अभाज्य संख्याएँ का परीक्षण इस प्रकार करते है:
 * 4) $Δ$ आकार की बूलियन सरणी सेट करें।
 * 5) अब तक पाए गए प्रत्येक अभाज्य $p ≤ √m$ के गुणकों के अनुरूप सरणी में गैर-अभाज्य के रूप में चिह्नित करें, $m - Δ$ और $m$ के मध्य $p$ के निम्नतम गुणज से प्रारम्भ करते हुए $p$ के चरणों में इसके गुणकों की गणना करते है।
 * 6) सरणी में शेष अन्य-चिह्नित स्थान खंड में अभाज्य संख्याओं के अनुरूप हैं। इन अभाज्य संख्याओं के किसी गुणज को चिन्हित करना आवश्यक नहीं है, क्योंकि ये सभी अभाज्य संख्याएँ $√m$, से बड़ी हैं, जैसा कि $k ≥ 1$, के लिए, किसी के समीप $$(k\Delta + 1)^2 > (k+1)\Delta$$ है।

यदि $Δ$ को $√n$ चयन किया गया है, तो एल्गोरिथम की अंतरिक्ष जटिलता $O(√n)$ है, जबकि समय की जटिलता नियमित सीव के समान है।

ऊपरी सीमा $n$ के साथ श्रेणियों के लिए इतना बड़ा है कि एराटोस्थनीज के पृष्ठ खंडित सीव की आवश्यकता के अनुसार $√n$ के नीचे की सीव मेमोरी में फिट नहीं हो सकती है,सोरेनसन की सीव समान धीमी परन्तु अधिक स्थान-कुशल सीव का उपयोग किया जा सकता है।

वृद्धिशील सीव
सीव का वृद्धिशील सूत्रीकरण अभाज्य संख्याओं की पीढ़ी को उनके गुणकों की पीढ़ी के साथ जोड़कर अनिश्चित काल के लिए (अर्थात,ऊपरी सीमा के बिना) अभाज्य संख्याओं को उत्पन्न करता है (जिससे अभाज्य संख्याओं को गुणकों के मध्य अंतराल में पाया जा सके), जहां के गुणक प्रत्येक अभाज्य $p$, $p$ (या $2p$ विषम अभाज्य संख्याओं के लिए) की वृद्धि में अभाज्य संख्याओं के वर्ग से गिनती करके सीधे उत्पन्न होते हैं। दक्षता पर प्रतिकूल प्रभाव से बचने के लिए, पीढ़ी को केवल तभी प्रारम्भ किया जाना चाहिए जब अभाज्य संख्याओं का वर्ग पहुंच गया हो। इसे डेटाफ्लो प्रोग्रामिंग प्रतिमान के अंतर्गत प्रतीकात्मक रूप से व्यक्त किया जा सकता है

primes = [2, 3, ...] \ [[p², p²+p, ...] for p in primes],

संख्याओं की अंकगणितीय प्रगति के सेट घटाव को दर्शाने वाले  के साथ सूची बोध संकेतन का उपयोग करना।

अभाज्य संख्याओं अनुक्रमिक अभाज्य द्वारा विभाज्यता परीक्षण के माध्यम से कंपोजिट को पुनरावृत्त रूप से सीव करके भी अभाज्य संख्याओं का उत्पादन किया जा सकता है। यह एराटोस्थनीज की सीव नहीं है, परन्तु प्रायः इसके साथ भ्रमित होता है, एराटोस्थनीज की सीव उनके लिए परीक्षण के अतिरिक्त सीधे कंपोजिट उत्पन्न करती है। विभाज्यता परीक्षण में अभाज्य संख्याओं की श्रेणी उत्पन्न करने में एराटोस्थनीज की सीव की अपेक्षा में एल्गोरिदम का सैद्धांतिक विश्लेषण है।

प्रत्येक अभाज्य का परीक्षण करते समय, इष्टतम परीक्षण प्रभाग एल्गोरिथ्म सभी अभाज्य संख्याओं का उपयोग करता है जो इसके वर्गमूल से अधिक नहीं होती हैं, परन्तु एराटोस्थनीज की सीव प्रत्येक सम्मिश्र को केवल इसके प्रमुख कारकों से उत्पन्न करती है, और सम्मिश्रों के मध्य मुफ्त में अभाज्य प्राप्त करती है। डेविड टर्नर (कंप्यूटर वैज्ञानिक) द्वारा व्यापक रूप से ज्ञात 1975 के कार्यात्मक प्रोग्रामिंग सीव कोड प्रायः एराटोस्थनीज की सीव के उदाहरण के रूप में प्रस्तुत किया जाता है परन्तु वास्तव में उप-इष्टतम परीक्षण प्रभाग सीव है।

एल्गोरिथम जटिलता
एराटोस्थनीज की सीव कंप्यूटर के प्रदर्शन को बेंचमार्क करने का लोकप्रिय उपाय है। सभी अभाज्य संख्याओं की गणना करने की समय जटिलता $n$ रैंडम एक्सेस मशीन मॉडल में है $O(n log log n)$ संचालन, इस तथ्य का प्रत्यक्ष परिणाम है कि प्रमुख हार्मोनिक श्रृंखला $log log n$ स्पर्शोन्मुख रूप से पहुंचती है, इसमें इनपुट आकार के संबंध में घातीय समय जटिलता है, चूँकि, जो इसे छद्म-बहुपद एल्गोरिदम बनाता है। बुनियादी एल्गोरिदम $O(n)$ स्मृति की आवश्यकता है।

एल्गोरिदम की थोड़ी जटिलता $O ( n (log n) (log log n) )$ बिट ऑपरेशंस की मेमोरी आवश्यकता के साथ $O(n)$ है, सामान्य रूप से प्रस्तावित किए गए पृष्ठ खंडित संस्करण में समान परिचालन जटिलता होती है $O(n log log n)$ अन्य-खंडित संस्करण के रूप में परन्तु भिन्नता भिन्नतािक्ष आवश्यकताओं को खंड पृष्ठ के बहुत न्यूनतम आकार तक कम कर देता है और साथ ही आकार के क्रमिक पृष्ठ खंडों से कंपोजिट को कम करने के लिए उपयोग की जाने वाली श्रेणी के वर्गमूल से कम आधार अभाज्य संख्याओं को एकत्रित करने के लिए आवश्यक मेमोरी $O ( √n⁄log n  )$ है।

एराटोस्थनीज की सीव का विशेष (यदि कभी, प्रस्तावित किया गया) खंडित संस्करण, बुनियादी अनुकूलन के साथ, $O(n)$ संचालन और $O ( √nlog log n⁄log n  )$ स्मृति के टुकड़े उपयोग करता है। बिग ओ नोटेशन का उपयोग करने से स्थिर कारकों और ऑफ़सेट की अनदेखी होती है जो व्यावहारिक श्रेणियों के लिए बहुत महत्वपूर्ण हो सकते हैं: एराटोस्थनीज भिन्नता की सीव जिसे प्रिटचर्ड व्हील सीव के रूप में जाना जाता है  $O(n)$ प्रदर्शन है, परन्तु इसके बुनियादी कार्यान्वयन के लिए या तो बड़ी सरणी एल्गोरिदम की आवश्यकता होती है जो इसकी प्रयोग करने योग्य सीमा को उपलब्ध स्मृति की मात्रा तक सीमित करती है अनछलनीा स्मृति उपयोग को कम करने के लिए इसे पृष्ठ खंडित करने की आवश्यकता होती है। स्मृति को बचाने के लिए पेज सेगमेंटेशन के साथ कार्यान्वित किए जाने पर, मूल एल्गोरिदम को अभी भी आवश्यकता होती है $O ( n⁄log n  )$ मेमोरी के बिट्स (एराटोस्थनीज के मूल पृष्ठ खंडित सीव की आवश्यकता से बहुत अधिक $O ( √n⁄log n  )$ स्मृति के टुकड़े) है। प्रिटचर्ड के काम ने बड़े स्थिर कारक की कीमत पर स्मृति की आवश्यकता को कम कर दिया। चूँकि परिणामी पहिया सीव $O(n)$ प्रदर्शन है और स्वीकार्य स्मृति आवश्यकता, यह व्यावहारिक रूप से छानने की सीमा के लिए एराटोस्थनीज की यथोचित व्हील फैक्टराइज़्ड बुनियादी सीव से तीव्र नहीं है।

यूलर की सीव
रीमैन ज़ेटा फ़ंक्शन के लिए यूलर उत्पाद सूत्र का यूलर का प्रमाण यूलर उत्पाद सूत्र के प्रमाण में एराटोस्थनीज़ की सीव का संस्करण होता है जिसमें प्रत्येक समग्र संख्या ठीक समाप्त हो जाती है। उसी सीव को फिर से अनुशोधित किया गया और  रैखिक समय लेने के लिए मनाया गया. यह भी, 2 से लेकर संख्याओं की सूची (कंप्यूटिंग) के साथ $n$ क्रम में प्रारम्भ होता है। प्रत्येक चरण पर प्रथम तत्व को निकटतम अभाज्य के रूप में पहचाना जाता है, सूची के प्रत्येक तत्व से गुणा किया जाता है (इस प्रकार स्वयं से प्रारम्भ होता है), और परिणाम पश्चात में हटाने के लिए सूची में चिह्नित किए जाते हैं। प्रारंभिक तत्व और चिह्नित तत्वों को कार्य क्रम से हटा दिया जाता है, और प्रक्रिया दोहराई जाती है: 

[2] (3) 5 7  9  11  13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79  ...  [3]    (5) 7     11  13    17 19    23 25    29 31    35 37    41 43    47 49    53 55    59 61    65 67    71 73    77 79  ...  [4]       (7)    11  13    17 19    23       29 31       37    41 43    47 49    53       59 61       67    71 73    77 79  ...  [5]             (11) 13    17 19    23       29 31       37    41 43    47       53       59 61       67    71 73       79  [...]

यहाँ उदाहरण को एल्गोरिथम के प्रथम चरण के पश्चात ऑड्स से प्रारम्भ करते हुए दिखाया गया है। इस प्रकार, पर $k$ वाँ चरण के सभी शेष गुणज $k$ अभाज्य को सूची से हटा दिया जाता है, पश्चात में प्रथम के साथ केवल सहअभाज्य संख्याएँ होंगी $k$ अभाज्य संख्याओं (सी एफ व्हील फैक्टराइजेशन), जिससे सूची निकटतम अभाज्य से प्रारम्भ हो, और इसके प्रथम तत्व के वर्ग के नीचे की सभी संख्याएँ भी अभाज्य होंगी।

इस प्रकार, अभाज्य संख्यछलनी का बंधा हुआ छलनीक्रम उत्पन्न कछलनी समय, जब निकटतम पहचानी गई अभाज्य ऊपरी सीमा के वर्गमूल से अधिक हो जाती है, तो सूची में शेष सभी संख्याएँ अभाज्य होती हैं। ऊपर दिए गए उदाहरण में 11 को निकटतम अभाज्य के रूप में पहचानने पर, 80 से कम या उसके समान  सभी अभाज्य संख्याओं की सूची देकर प्राप्त किया जाता है।

ध्यान दें कि किसी चरण द्वारा छोड़ी जाने वाली संख्याएँ अभी भी उस चरण में गुणकों को चिह्नित करते समय उपयोग की जाती हैं, उदाहरण के लिए, 3 के गुणकों के लिए यह है 3 × 3 = 9, 3 × 5 = 15, 3 × 7 = 21, 3 × 9 = 27, ..., 3 × 15 = 45, ..., इसलिए इससे सुलझाने में सावधानी रखनी चाहिए।

यह भी देखें

 * प्रिचर्ड की सीव
 * एटकिन की सीव
 * सुंदरम की सीव
 * सीव सिद्धांत

बाहरी संबंध

 * अभाज्य संख्याieve – Very fast highly optimized C/C++ segmented Sieve of Eratosthenes
 * Eratosthenes, sieve of at Encyclopaedia of Mathematics
 * Interactive JavaScript Page
 * Sieve of Eratosthenes by George Beck, Wolfram Demonstrations Project.
 * Sieve of Eratosthenes in Haskell
 * Sieve of Eratosthenes algorithm illustrated and explained. Java and C++ implementations.
 * A related sieve written in x86 assembly language
 * Fast optimized highly parallel CUDA segmented Sieve of Eratosthenes in C
 * SieveOfEratosthenesInManyProgrammingLanguages c2 wiki page
 * The Art of Prime Sieving Sieve of Eratosthenes in C from 1998 with nice features and algorithmic tricks explained.