यह C++ प्रोग्राम दी गई सीमा में अभाज्य संख्याएं उत्पन्न करने के लिए सुंदरम की छलनी को लागू करता है। इस एल्गोरिदम की खोज 1934 में सुंदरम ने की थी।
एल्गोरिदम
शुरुआत printPrimes(n) यहां हम n से छोटी अभाज्य संख्याएं ढूंढते हैं, हम n-2 को आधा करते हैं। इसे New कहते हैं। New = (n-2)/2; एक सरणी marked[n] बनाएं जिसका उपयोग i+j+2ij रूप की संख्याओं को दूसरों से अलग करने के लिए किया जाता है जहां 1 <= i <= j marked[] के सभी प्रविष्टियों को गलत के रूप में आरंभ करें। i+j+2ij रूप की सभी संख्याओं को सही के रूप में चिह्नित करें जहां 1 <= i <= j i=1 से New तक a) j = i; b) लूप जब तक (i + j + 2*i*j) 2, तो 2 को पहली अभाज्य संख्या के रूप में प्रिंट करें। शेष अभाज्य संख्याएं 2i + 1 रूप की होती हैं जहां i अनचिह्नित संख्याओं का सूचकांक है। तो उन सभी i के लिए 2i + 1 प्रिंट करें जहां marked[i] गलत है। अंत
उदाहरण कोड
#include <bits/stdc++.h> using namespace std; int SieveOfSundaram(int m) { int N= (m-2)/2; bool marked[N + 1]; memset(marked, false, sizeof(marked)); for (int i=1; i<=N; i++) for (int j=i; (i + j + 2*i*j) <= N; j++) marked[i + j + 2*i*j] = true; if (m > 2) cout << 2 << " "; for (int i=1; i<=N; i++) if (marked[i] == false) cout << 2*i + 1 << " "; } int main(void) { int m = 10; SieveOfSundaram(m); return 0; }
आउटपुट
2 3 5 7