• 线性筛的各种用处


    线性筛筛质数:

     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
  • 相关阅读:
    C程序的存储空间布局
    获取系统数据文件信息
    基于UDP的一对回射客户/服务器程序
    一段经典的 Java 风格程序 ( 类,包 )
    Vue 脱坑记
    vue面试题总汇
    JavaScript调试技巧
    伪元素小技巧
    JavaScript 开发人员需要知道的简写技巧
    select2插件改造之设置自定义选项 源码
  • 原文地址:https://www.cnblogs.com/Sundial/p/11854677.html
Copyright © 2020-2023  润新知