相关疑难解决方法(0)

找到 40 亿以下所有素数的最快方法

我正在尝试打印 2**32 以下的每个素数。现在我正在使用布尔向量构建一个筛子,然后在制作筛子后打印出素数。仅打印 10 亿以内的素数就需要 4 分钟。有没有更快的方法来做到这一点?这是我的代码

#include <iostream>
#include <cstdlib>
#include <vector>
#include <math.h>

using namespace std;

int main(int argc, char **argv){
  long long limit = atoll(argv[1]);
  //cin >> limit;
  long long sqrtlimit = sqrt(limit);

  vector<bool> sieve(limit+1, false);

  for(long long n = 4; n <= limit; n += 2)
    sieve[n] = true;

  for(long long n=3; n <= sqrtlimit; n = n+2){
    if(!sieve[n]){
      for(long long m = n*n; m<=limit; m=m+(2*n))
        sieve[m] = true;
    }
  }

  long long last;
  for(long long …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm primes sieve-of-eratosthenes

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

algorithm ×1

c++ ×1

primes ×1

sieve-of-eratosthenes ×1