zoukankan      html  css  js  c++  java
  • 欧拉,素数,莫比乌斯反演函数筛法

    欧拉,素数,莫比乌斯反演函数筛法

    此筛法依据原理:每个合数肯定能被自己的最小素因子筛到,即val=素数*数。若没被筛到则为素数

    #include<cstdio>
    #include<algorithm>
    #include<string>
    #include<cstring>
    #include<iostream>
    #include<iomanip>
    #include<stack>
    #include<vector>
    #define mset(a,b)   memset(a,b,sizeof(a))
    using namespace std;
    typedef unsigned long long ull;
    typedef long long ll;
    const int maxn=100000;
    const int branch=26;
    const int inf=0x3f3f3f3f;
    const int MOD=10007;
    bool check[maxn+10];
    int prime[maxn+10],mu[maxn+10];
    int phi[maxn+10];
    void init()//欧拉 素数 莫比乌斯反演函数
    {
        mset(check,0);
        mu[1]=1;
        phi[1]=1;
        int tot=0;
        for(int i=2;i<=maxn;++i)
        {
            if(!check[i])
            {
                prime[tot++]=i;
                phi[i]=i-1;
                mu[i]=-1;
            }
            for(int j=0;j<tot;j++)
            {
                if(i*prime[j]>maxn) break;
                check[i*prime[j]]=true;
                if(i%prime[j]==0)
                {
                    mu[i*prime[j]]=0;
                    phi[i*prime[j]]=phi[i]*prime[j];
                    break;
                }
                else
                {
                    mu[i*prime[j]]=-mu[i];
                    phi[i*prime[j]]=phi[i]*phi[prime[j]];//积性函数的性质
                }
            }
        }
    }
    
  • 相关阅读:
    experiment 2
    experiment 5
    php 代码审计之变量覆盖
    experiment 4
    experiment 3
    experiment 1
    2018铁三测评WP
    Lesson 1
    实验四、决策树算法及应用
    实验三 朴素贝叶斯算法及应用
  • 原文地址:https://www.cnblogs.com/dchnzlh/p/10427265.html
Copyright © 2011-2022 走看看