程序使用C ++ STL打印给定范围内的素数
在本教程中,我们将讨论使用C++标准模板库为给定范围的数字打印质数的程序。
在此,我们将得到两个数字,分别是a和b。任务是打印此范围内所有即将到来的质数。为此,我们将通过使用Eratosthenes的Sieve方法作为子例程来运行它。同时,我们将所有质数存储在向量中,最后将它们全部打印出来。
示例
#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
热门推荐
10 小朋友祝福语简短的话
11 开业经典祝福语简短
12 给司机老师祝福语简短
13 迟到的过年祝福语简短
14 致姐姐生日祝福语简短
15 表妹结婚祝福语简短藏语
16 毕业英语祝福语大全简短
17 牛年新年祝福语大全简短
18 公司个人新年祝福语简短