程序使用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 生女孩红包简短祝福语