Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình in các số nguyên tố cho một dải số nhất định bằng cách sử dụng Thư viện Mẫu Chuẩn C ++.
Trong phần này, chúng ta sẽ được đưa ra hai số là a và b. Nhiệm vụ là in tất cả các số nguyên tố sắp tới trong phạm vi này. Đối với điều này, chúng tôi sẽ sử dụng phương thức Sieve of Eratosthenes bằng cách chạy nó như một chương trình con. Đồng thời, chúng tôi sẽ lưu trữ tất cả các số nguyên tố trong một vectơ và cuối cùng là in tất cả chúng.
Ví dụ
#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; }
Đầu ra
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89