IT评测·应用市场-qidao123.com技术社区

标题: 普通算法——埃氏筛 [打印本页]

作者: 我爱普洱茶    时间: 2024-12-9 14:46
标题: 普通算法——埃氏筛
埃氏筛

用于更加速速的求素数
思路:

  1. #include <iostream>
  2. #include <ctime>
  3. using namespace std;
  4. const int N = 1e7;
  5. bool st[N] = { false };
  6. int main()
  7. {
  8.         double e = clock();
  9.         int count = 0;
  10.         int pp = 0;
  11.         //埃氏筛法:50ms
  12.         for (int i = 2; i <= N / i; i++) {
  13.                 if (!st[i]) {
  14.                         for (int j = i * i; j < N; j += i) st[j] = true;
  15.                 }
  16.         }
  17.         for (int i = 2; i < N; i++)
  18.         if (!st[i]) count++;
  19.         //普通筛法:806ms
  20.         /*for (int i = 2; i < N; i++) {
  21.                 if (is_Prime(i)) count++;
  22.         }*/
  23.         //欧拉筛法:43ms
  24.         /*int primes[N];
  25.         for (int i = 2; i <= N; i++) {
  26.                 if (!st[i]) primes[pp++] = i, count++;
  27.                 for (int j = 0; i * primes[j] <= N; j++) {
  28.                         st[primes[j] * i] = true;
  29.                         if (i % primes[j] == 0) break;
  30.                 }
  31.         }*/
  32.         double s = clock();
  33.         cout << count << endl << s - e;
  34. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4