素数

2022/9/3 23:23:43

本文主要是介绍素数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

欧拉筛法

 1 vector<int> Prime(int n){  // 求解n以内(含n)的素数
 2     bool flag[n + 1];   // 标记数组,flag[i]==0表示i为素数,flag[i]==1表示i为合数
 3     memset(flag, 0, sizeof(flag));
 4     vector<int> prime;
 5     int cnt = 0;    // 素数个数
 6     for (int i = 2; i <= n; ++i) {
 7         if (!flag[i]) {
 8             prime.push_back(i); // 将i加入素数表
 9             cnt++;
10         }
11         for (int j = 0; j < cnt; ++j)
12         { // 保证每个合数只会被它的最小质因数筛去
13             if (i * prime[j] > n)  break;
14             flag[i * prime[j]] = 1;
15             if (i % prime[j] == 0)  break;
16         }
17     }
18     return prime;
19 }

 



这篇关于素数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程