素数-试除法和埃式筛选法模板
生活随笔
收集整理的這篇文章主要介紹了
素数-试除法和埃式筛选法模板
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
試除法:
bool is_prime(int n) {if (n <= 1) return false;for (int i = 2;i<=sqrt(n);i++)//這樣寫更好!if (n % i==0) return false;return true; }埃式篩選法:
const int N = 1e7; int prime[N + 1]; bool vis[N + 1];int n_prime(int n) {int k = 0;memset(vis, 0, sizeof(vis));for (int i = 2; i <= n; i++)if (!vis[i]) {prime[k++] = i;for (int j = 2 * i; j <= n; j += i)vis[j] = true;}return k; }優化后的埃式篩選法:
const int N = 1e7; int prime[N + 1]; bool vis[N + 1];bool n_prime(int n) {memset(vis, 0, sizeof(vis));for (int i = 2; i <= n; i++) {if (!vis[i])for (int j = i * i; j <= n; j += i)vis[j] = true;}int k = 0;for (int i = 2; i <= n; i++)if (!vis[i])prime[k++] = i;return k; }題目描述
用篩法求之N內的素數。
輸入
N
輸出
0~N的素數
樣例輸入
100
樣例輸出
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
舉例:
代碼如下:
總結
以上是生活随笔為你收集整理的素数-试除法和埃式筛选法模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 惩戒之箭 - 韦鲁斯 皮肤大全
- 下一篇: 7的序列-数论