/*******************************************************************************
素数+欧拉函数表 prime[]存素数 phi[]存欧拉函数
*******************************************************************************/
const int size = 3000010;
int phi[size], prime[size];
bool check[size];
void excelphi() {
memset(check, false, sizeof(check));
phi[1] = 1;
int tot = 0;
for (int i = 2; i <= size; i++) {
if (!check[i]) {
prime[tot++] = i;
phi[i] = i - 1;
}
for (int j = 0; j < tot; j++) {
if (i * prime[j] > size) break;
check[i*prime[j]] = true;
if (i % prime[j] == 0) {
phi[i*prime[j]] = phi[i]*prime[j];
break;
} else {
phi[i*prime[j]] = phi[i]*(prime[j] - 1);
}
}
}
}
筛素数和欧拉函数的模板
最新推荐文章于 2023-04-28 18:06:13 发布