筛选法求N范围内的所有素数
2017-06-23 16:50
459 查看
先把N个自然数按次序排列起来。1不是质数也不是合数,所以排除1,从2开始。2是质数留下来,把后面能被2整除的数全部删除;接着留下来的第二个素数是3,把后面能被3整除的数删除;依次后移,直到N。我用操作最简单的vector容器实现,看代码:
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
cin>>n;
if(n<=1){
cout<<"error!"<<endl; //如果n<=1,则无意义,返回0;
return 0;
}
vector<int>vec;
for(int i = 2;i<=n;i++){
vec.push_back(i); //从2开始,依次放入容器
}
int i = 0;
while(i<vec.size()){
for(int j = i+1;j<vec.size();j++){
if(vec[j] % vec[i] == 0){
vec.erase(vec.begin()+j); //如果能被整除,则直接删除掉
}
}
i++;
}
for(int i=0;i<vec.size();i++){
cout<<vec[i]<<' ';
}
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
cin>>n;
if(n<=1){
cout<<"error!"<<endl; //如果n<=1,则无意义,返回0;
return 0;
}
vector<int>vec;
for(int i = 2;i<=n;i++){
vec.push_back(i); //从2开始,依次放入容器
}
int i = 0;
while(i<vec.size()){
for(int j = i+1;j<vec.size();j++){
if(vec[j] % vec[i] == 0){
vec.erase(vec.begin()+j); //如果能被整除,则直接删除掉
}
}
i++;
}
for(int i=0;i<vec.size();i++){
cout<<vec[i]<<' ';
}
return 0;
}
相关文章推荐
- C/C++练习7---求某个范围内的所有素数
- C++程序设计实践指导1.8求指定范围内的所有素数改写要求实现
- 求某个范围内的所有素数
- 1137C/C++经典程序训练7---求某个范围内的所有素数
- 快速求1000,000范围内的所有素数,复杂度为O(n)
- Problem D: C/C++经典程序训练7---求某个范围内的所有素数
- C/C++练习7---求某个范围内的所有素数
- 寻找0-2^32-1范围内所有的素数
- 山东理工大学ACM平台题答案关于C语言 1137 C/C++经典程序训练7---求某个范围内的所有素数
- 求某个正整数范围内的所有素数
- 求指定范围内的所有素数
- 建立一个类PrimeNUM,求指定数据范围内的所有素数(质数)。具体要求如下:
- 使用java代码实现求某个范围内的所有素数
- 算法15:打印中两个整数范围内的所有素数,例如:(12, 15) ->13
- 十二、函数能够判断一个数字是否是一个素数(并给出一个范围求出这个范围内所有的素数)
- 素数筛选法输出指定范围内的所有素数
- Java编程练习系列一:获取给定范围内的所有素数
- C/C++练习7---求某个范围内的所有素数
- c++ 依次存放在指定范围内求出的所有素数
- 求出1~N范围中所有的素数