之前碰到一道打表题目,用的就是欧拉函数筛,没什么好讲的直接贴代码
#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);
}
}
}