思路:
首先, 显然当$p$为质数时, $(p,p)$是质数.
同时, 若$a > b$且$(a,b) = g \neq 1$时, 有$a = cg, b = dg, c > d$且$(c,d)=1$
此时答案已经呼之欲出了: 从$c$入手, 计算出$\phi(c)$即可知有多少$d < c$满足$(c,d)=1$, 然后计算出$\lfloor \frac{n}{c} \rfloor$内有多少质数, 再把两数相乘, 即得到满足$n \geq a > b$且$g = (a,b)$为质数的数对数量了.
而这两个数可以通过线性筛在$O(n)$的时间内预处理得到. 问题便解决了.
代码:
1 |
|