Appearance
对于
仿照挨氏筛,时间复杂度:
cpp
bitset<N> not_prime;
not_prime[1] = 1;
for (int i = 2; i <= n; i++) {
if (not_prime[i])
continue;
for (int j = i; j <= n; j += i) {
a[j] += a[j / i];
not_prime[j] = 1;
}
}Dirichlet 后缀和:
对于
稍微变形一下:
cpp
bitset<N> not_prime;
not_prime[1] = 1;
for (int i = 2; i <= n; i++) {
if (not_prime[i])
continue;
for (int j = i; j <= n; j += i) {
a[j / i] += a[j];
not_prime[j] = 1;
}
}