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