判斷n以內所有素數

判斷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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章