欧拉函数筛

之前碰到一道打表题目,用的就是欧拉函数筛,没什么好讲的直接贴代码

    #define MAXD 4000010
    const int N = 4000000;
    int phi[MAXD];
    for(int i = 1; i <= N; i ++)
        phi[i] = i;
    for(int i = 2; i <= N; i ++)
    {
        if(phi[i] == i){ ///质数
            for(int j = i; j <= N; j += i){
                phi[j] = phi[j] / i * (i - 1);
            }
        }
    }

 

你可能感兴趣的:(数论)