题目链接
题目大意为给你一个数 $n$ ,求所有 $1 \leq x, y \leq n $ 且 $\gcd(x, y)$ 为质数的 $(x, y)$ 数对个数。
题目没给数据范围,MLE + RE 了好多次终于弄清楚了数据范围大概在一千万左右。
这题有些卡空间,要注意数组不要开太多。
首先我们需要一个线性筛,来筛出 $1 - n$ 以内所有的数是否为质数,记为 $p[i]$,即若 $i$ 为质数则 $p[i] = 1$,否则为 $0$。
然后我们枚举最大公约数。
即设
$$ f(k) = \sum_{1 \leq x, y \leq n}[\gcd(x, y) = 1] $$
所求即
$$ \sum_{k = 1}^np[k]f(\lfloor\frac nk\rfloor) $$
分块求就可以了。
1 |
|