程序使用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 50多岁生日简短祝福语
14 接亲新郎进门祝福语简短
15 画室蛋糕祝福语简短英文
16 新郎表白成语祝福语简短
17 简短的祝福语12字
18 女生成年祝福语简短