判断n以内所有素数
偶尔会碰到跟素数相关的题目,需要我们快速找到n以内的所有素数,这里记录一种效率比较高的方法。
所有大于2的偶数都不是素数,因此我们从3开始找,每次步进2。
判断一个数是否为素数的方法是:判断是否存在小于等于根号n的数能整除n,存在则不是素数,不存在则确定是素数。
代码如下:
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
vector<int> find_prime(int n) {
vector<int> prim_num;
for(int j=3;j<=n;j+=2) {
float temp = static_cast<float>(j);
int mid = static_cast<int>(sqrt(temp));
int i=2;
for(;i<=mid;i++) {
if(j%i==0) break;
}
if(i>mid) prim_num.push_back(j);
}
return prim_num;
}
int main()
{
vector<int> prim_num = find_prime(17);
for(auto it=prim_num.begin();it!=prim_num.end();it++) {
cout<<*it<<" ";
}
cout<<endl;
return 0;
}