इस ट्यूटोरियल में, हम C++ स्टैण्डर्ड टेम्प्लेट लाइब्रेरी का उपयोग करते हुए दी गई संख्या के लिए अभाज्य संख्याओं को प्रिंट करने के कार्यक्रम पर चर्चा करेंगे।
इसमें हमें दो नंबर दिए जाएंगे जैसे a और b। कार्य इस श्रेणी में आने वाले सभी अभाज्य संख्याओं को प्रिंट करना है। इसके लिए हम Sieve of Eratosthenes विधि को सबरूटीन के रूप में चलाकर प्रयोग करेंगे। साथ ही हम सभी अभाज्य संख्याओं को एक वेक्टर में संग्रहीत करेंगे और अंत में उन सभी को प्रिंट करेंगे।
उदाहरण
#include<bits/stdc++.h> using namespace std; typedef unsigned long long int unll; vector<unll> eratosthemes(unll n){ vector<bool> 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<unll< 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<unll> sieve_range(unll start,unll end){ vector<unll> s1 = eratosthemes(start); vector<unll> s2 = eratosthemes(end); vector<unll> elements(end-start); set_difference(s2.begin(), s2.end(), s1.begin(), s2.end(), elements.begin()); vector<unll>::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<unll> 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