इस ट्यूटोरियल में, हम C++ स्टैंडर्ड टेम्पलेट लाइब्रेरी का उपयोग करके दी गई संख्या की सीमा के लिए अभाज्य संख्याएं प्रिंट करने के प्रोग्राम पर चर्चा करेंगे।
इसमें, हमें दो संख्याएं a और b दी जाएंगी। कार्य इस सीमा में आने वाली सभी अभाज्य संख्याओं को प्रिंट करना है। इसके लिए, हम एराटोस्थनीज की छलनी (Sieve of Eratosthenes) विधि का उपयोग इसे सबरूटीन के रूप में चलाकर करेंगे। साथ ही हम सभी अभाज्य संख्याओं को एक वेक्टर में स्टोर करेंगे और अंत में उन सभी को प्रिंट करेंगे।
उदाहरण
#include <bits/stdc++.h> using namespace std; typedef unsigned long long int unll; vectoreratosthemes(unll n) { vector prime_num(n + 1, true); prime_num[0] = false; prime_num[1] = false; int m = sqrt(n); for (unll p = 2; p <= m; p++) { if (prime_num[p]) { for (unll i = p * 2; i <= n; i += p) prime_num[i] = false; } } vector elements; for (int i = 0; i < n; i++) if (prime_num[i]) elements.push_back(i); return elements; } bool check_zero(unll i) { return i == 0; } vector sieve_range(unll start, unll end) { vector s1 = eratosthemes(start); vector s2 = eratosthemes(end); vector elements(end - start); set_difference(s2.begin(), s2.end(), s1.begin(), s2.end(), elements.begin()); vector ::iterator itr = remove_if(elements.begin(), elements.end(), check_zero); elements.resize(itr - elements.begin()); return elements; } int main(void) { unll start = 10; unll end = 90; vector elements = sieve_range(start, end); for (auto i : elements) cout << i << ' '; return 0; }
आउटपुट
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89