for (ll i = 2; i <= n; i++) {
if (!bz[i]) pri[++cnt] = i, phi[i] = i - 1;
for (ll j = 1; j <= cnt and i * pri[j] <= n; j++) {
bz[i * pri[j]] = 1;
if (i % pri[j] == 0) {phi[i * pri[j]] = phi[i] * pri[j]; break;}
else phi[i * pri[j]] = phi[i] * (pri[j] - 1);
}
}

板子先放在这里
主要的问题是两个:
关于线性筛欧拉函数的相关证明_欧拉函数时,关于线性筛欧拉函数的相关证明_i++_02
关于线性筛欧拉函数的相关证明_i++_03时,关于线性筛欧拉函数的相关证明_线性筛_04(这里的关于线性筛欧拉函数的相关证明_欧拉函数_05就是关于线性筛欧拉函数的相关证明_线性筛_06
现在把关于线性筛欧拉函数的相关证明_i++_07写做关于线性筛欧拉函数的相关证明_欧拉函数_08,因为好打
下面第二个比较好理解,因为关于线性筛欧拉函数的相关证明_线性筛_09关于线性筛欧拉函数的相关证明_欧拉函数_08互质,所以满足积性性
第一个就另外需要一些不太严谨的证明:
关于线性筛欧拉函数的相关证明_i++_11关于线性筛欧拉函数的相关证明_线性筛_09不互质,即关于线性筛欧拉函数的相关证明_i++_11关于线性筛欧拉函数的相关证明_线性筛_09有公因子,则关于线性筛欧拉函数的相关证明_欧拉函数_15关于线性筛欧拉函数的相关证明_线性筛_09不互质
关于线性筛欧拉函数的相关证明_线性筛_17中与关于线性筛欧拉函数的相关证明_线性筛_09不互质的数有关于线性筛欧拉函数的相关证明_欧拉函数_19
因为关于线性筛欧拉函数的相关证明_欧拉函数_15关于线性筛欧拉函数的相关证明_线性筛_09不互质,所以关于线性筛欧拉函数的相关证明_线性筛_22中与关于线性筛欧拉函数的相关证明_线性筛_09不互质的数也有关于线性筛欧拉函数的相关证明_欧拉函数_19
得出关于线性筛欧拉函数的相关证明_欧拉函数_25中与关于线性筛欧拉函数的相关证明_线性筛_09不互质的数有关于线性筛欧拉函数的相关证明_线性筛_27
关于线性筛欧拉函数的相关证明_欧拉函数_28,则关于线性筛欧拉函数的相关证明_线性筛_09关于线性筛欧拉函数的相关证明_欧拉函数_08互质,关于线性筛欧拉函数的相关证明_线性筛_09关于线性筛欧拉函数的相关证明_欧拉函数_08没有公共因子
关于线性筛欧拉函数的相关证明_欧拉函数_25中与关于线性筛欧拉函数的相关证明_线性筛_34不互质的数有关于线性筛欧拉函数的相关证明_欧拉函数_35
所以关于线性筛欧拉函数的相关证明_线性筛_36
即可得出上面代码中的式子