-
.
-
, ( 为质数)
-
若 , , 否则 .
证明有时间再填坑吧 …
红色字体可以记为: 无约减一/有余减一.
放出代码
for(int i = 2; i < N; i ++)
if(!sign[i]) prime[++num] = i, phi[i] = i - 1;
for(int j = 1; i*prime[j] <= N && j <= num; j ++){
sign[i*prime[j]] = 1;
if(i % prime[j]) phi[i*prime[j]] = phi[i] * (prime[j]-1);
else{
phi[i*prime[j]] = phi[i] * prime[j];
break ;
}
}
可以点击 这里