判斷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;
}