首页 > 代码库 > 欧拉函数模板

欧拉函数模板

欧拉函数:表示1-(n-1)中,与n互质的数的个数

本以为学会容斥原理就不必再看欧拉函数,可是偏偏就是有些题用容斥原理解不了,必须参考欧拉,没办法只好回头看欧拉函数

下面贴一个筛法求欧拉函数模板:

//初始化eu[1]=0或者eu[1]=1,具体情况根据题目变化!
//下面计算2-10000的欧拉函数
const int MAX = 10001;
int eu[MAX];//不要忘记初始化eu[1]. 
void eular(){
    for(int i=2;i<MAx;i++){
        if(!eu[i])
            for(int j=i;j<MAX;j+=i){
                if(!eu[j]) eu[j]=j;
                eu[j]=eu[j]/i*(i-1);
            }
    }
}

欧拉函数模板