এই টিউটোরিয়ালে C++ Standard Template Library (STL) ব্যবহার করে নির্দিষ্ট রেঞ্জের প্রাইম নম্বর প্রিন্ট করার প্রোগ্রাম আলোচনা করা হবে।
দুটি সংখ্যা a এবং b দেওয়া থাকলে, এই রেঞ্জের সব প্রাইম নম্বর প্রিন্ট করতে হবে। এর জন্য সিভ অফ এরাটোস্থেনিস (Sieve of Eratosthenes) মেথড সাবরুটিন (subroutine) হিসেবে চালানো হবে। সব প্রাইম নম্বর ভেক্টরে (vector) সংরক্ষণ করে শেষে প্রিন্ট করা।
উদাহরণ
#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 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