码迷,mamicode.com
首页 > 其他好文 > 详细

线性筛的各种用处

时间:2019-11-14 09:59:47      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:欧拉   onclick   线性筛   nbsp   cli   bsp   color   oid   splay   

线性筛筛质数:

技术图片
 1 int cnt, prime[N];
 2 bool vis[N];
 3 void getprime(int n) {
 4     vis[0] = vis[1] = 1;
 5     for (int i = 2; i <= n; i++) {
 6         if (!vis[i]) {
 7             prime[++cnt] = i;
 8         }
 9         for (int j = 1; j <= cnt && i * prime[j] <= n; j++) {
10             vis[i * prime[j]] = true;
11             if (i % prime[j] == 0) {
12                 break;
13             }
14         }
15     }
16 }
View Code

线性筛筛欧拉函数:

技术图片
 1 int cnt, prime[N], phi[N];
 2 bool vis[N];
 3 void getphi(int n) {
 4     vis[0] = vis[1] = 1;
 5     for (int i = 2; i <= n; i++) {
 6         if (!vis[i]) {
 7             prime[++cnt] = i;
 8             phi[i] = i - 1;
 9         }
10         for (int j = 1; j <= cnt && i * prime[j] <= n; j++) {
11             vis[i * prime[j]] = true;
12             if (i % prime[j] == 0) {
13                 phi[i * prime[j]] = phi[i] * prime[j];
14                 break;
15             } else {
16                 phi[i * prime[j]] = phi[i] * (prime[j] - 1);
17             }
18         }
19     }
20 }
View Code

线性筛筛莫比乌斯函数:

技术图片
 1 int cnt, prime[N], mu[N];
 2 bool vis[N];
 3 void getmu(int n) {
 4     vis[0] = vis[1] = 1;
 5     mu[1] = 1;
 6     for (int i = 2; i <= n; i++) {
 7         if (!vis[i]) {
 8             prime[++cnt] = i;
 9             mu[i] = -1;
10         }
11         for (int j = 1; j <= cnt && i * prime[j] <= n; j++) {
12             vis[i * prime[j]] = true;
13             if (i % prime[j] == 0) {
14                 mu[i * prime[j]] = 0;
15                 break;
16             } else {
17                 mu[i * prime[j]] = -mu[i];
18             }
19         }
20     }
21 }
View Code

 

线性筛的各种用处

标签:欧拉   onclick   线性筛   nbsp   cli   bsp   color   oid   splay   

原文地址:https://www.cnblogs.com/Sundial/p/11854677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!