zoukankan      html  css  js  c++  java
  • 【数学】Mobius函数

    质因数分解法求Mobius函数

    const int MAXN = 1e6 + 10;
    int p[MAXN], ptop;
    int pm[MAXN], pk[MAXN], mu[MAXN];
    
    void sieve(int n) {
        memset(pm, 0, sizeof(pm[0]) * (n + 1));
        ptop = 0, pm[1] = 1, pk[1] = 1, mu[1] = 1;
        for(int i = 2; i <= n; ++i) {
            if(!pm[i]) {
                p[++ptop] = i, pm[i] = i;
                pk[i] = i, mu[i] = -1;
            }
            for(int j = 1, t; j <= ptop && (t = i * p[j]) <= n; ++j) {
                pm[t] = p[j];
                if(i % p[j]) {
                    pk[t] = pk[p[j]];
                    mu[t] = mu[i] * mu[p[j]];
                } else {
                    pk[t] = pk[i] * p[j];
                    mu[t] = (pk[t] == t) ? 0 : mu[t / pk[t]] * mu[pk[t]];
                    break;
                }
            }
        }
    }
    
  • 相关阅读:
    从官方下载 Bootstrap 版本 并写 第一个页面
    南阳477
    南阳463
    南阳455
    南阳399
    南阳276
    南阳275
    南阳268
    南阳264
    南阳263
  • 原文地址:https://www.cnblogs.com/purinliang/p/14337813.html
Copyright © 2011-2022 走看看