标签:欧拉 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 }
线性筛筛欧拉函数:
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 }
线性筛筛莫比乌斯函数:
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 }
标签:欧拉 onclick 线性筛 nbsp cli bsp color oid splay
原文地址:https://www.cnblogs.com/Sundial/p/11854677.html