使用 C++ STL 程序打印给定范围内素数
在本教程中,我们将讨论使用 C++ 标准模板库打印给定数字范围内的素数的程序。
在这里,我们将给出两个数字,比如 a 和 b。任务是打印此范围内所有出现的素数。为此,我们将使用埃拉托斯特尼筛法作为子程序运行它。同时,我们将把所有素数存储在向量中,最后全部打印出来。
示例
#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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Java 脚本
PHP