/*=======================================================*\
| 递推求欧拉函数phi(i)
欧拉函数\varphi(n)是小于或等于n的正整数中与n互质的数的数目
\*=======================================================*/
#define N 3000000
__int64 phi[N + 100];
void Euler()
{
int i, j;
for(i = 1; i < N; i++)
phi[i] = i;
for(i = 2; i < N; i++)
if(i == phi[i]) //若i为素数 第一次不是
for(j = i; j < N; j += i) //让j累加i
phi[j] = (phi[j] / i) * (i - 1); //求欧拉函数
}
附件列表
时间: 2024-10-16 19:48:07