转自:https://www.luogu.org/blog/JustinRochester/solution-p2158
根据图像,易得出,所有的点都是关于 $y=x$ 对称的(这个性质我们待会儿要用到)
根据题目,如何判定一个点是否看得到呢?
我们假设一个点看不到,那么,根据图像的直观意义,便可以知道,这个点和原点连线的中间有一个点,假设该点为 $({x \over \lambda},{y \over \lambda}),(\lambda>1)$
那么,因为该点存在,故该点的横纵坐标都属于整数,即 ${x \over \lambda} \in Z$ , ${y \over \lambda} \in Z$
因此,$\lambda |x,\lambda |y$
即 $\lambda|gcd(x,y)$
因此 $gcd(x,y) \geq \lambda >1$
也就是说,对于一个点 $(x,y)$ 当且仅当 $gcd(x,y) \neq 1$ 时这个点看不到
因此,题目对于给定的 $n$ 所求的点数 $ans(n)$ 即满足
$ans(1)=0$
$ans(n)= \sum_{x=0}^{n-1} \sum_{y=0}^{n-1} [gcd(x,y)=1],n \geq 2$
当然,我们知道 $gcd(0,i)$ 是没有意义的,因此,我们对于某一项为 $0$ 的情况单独拉出来讨论
因为对于 $x=0$ 和 $y=0$ 的直线上,只有 $(0,1),(1,0)$ 两个点看得到
所以这边可以来一个特殊化处理,从而得到
$ans(n)= \sum_{x=1}^{n-1} \sum_{y=1}^{n-1} [gcd(x,y)=1]+2,n \geq 2$
显然,这个式子可以展开为
$ans(n)=\sum_{x=1}^{n-1} \sum_{y=1}^{x-1}[gcd(x,y)=1]+ \sum_{x=1}^{n-1} \sum_{y=x}^x [gcd(x,y)=1] + \sum_{x=1}^{n-1} \sum_{y=x+1}^{n-1}[gcd(x,y)=1]+2,n \geq 2$
又因为 $y=x$ 上能被看到的点只有点 $(1,1)$ ,所以我们可以直接考虑这个点,然后忽略这条直线了
因此,我们可以将这个式子化简为
$ans(n)=\sum_{x=1}^{n-1} \sum_{y=1}^{x-1}[gcd(x,y)=1]+ 1 + \sum_{x=1}^{n-1} \sum_{y=x+1}^{n-1}[gcd(x,y)=1]+2,n \geq 2$
即
$ans(n)=\sum_{x=1}^{n-1} \sum_{y=1}^{x-1}[gcd(x,y)=1] + \sum_{x=1}^{n-1} \sum_{y=x+1}^{n-1}[gcd(x,y)=1]+3,n \geq 2$
由文章最上方写的图像的原理,我们可以知道
$\sum_{x=1}^{n-1} \sum_{y=1}^{x-1}[gcd(x,y)=1]= \sum_{x=1}^{n-1} \sum_{y=x+1}^{n-1}[gcd(x,y)=1]$
因此 $ans(n)=2\sum_{x=1}^{n-1} \sum_{y=1}^{x-1}[gcd(x,y)=1]+3,n \geq 2$
又因为根据欧拉函数 $\varphi (n)$ 的定义,为小于 $n$ 且与 $n$ 不互质的数
即 $\varphi (n)=\sum_{i=1}^{n-1} [gcd(i,n)=1]$
因此,我们可以将式子简化为
$ans(n)=2\sum_{x=1}^{n-1} \varphi(x) +3,n \geq 2$
那么,根据定义,可以直接知道 $\varphi(1)=0$
所以,式子我们也可以这么写
$ans(n)=2\sum_{x=2}^{n-1} \varphi(x) +3,n \geq 2$
终于,我们得到了本题的答案
$ans(1)=0$
$ans(n)=2 \sum_{x=2}^{n-1} \varphi(x)+3 , n \geq 2$
那么,这里对于如何求 $\varphi(n)$ 做一个讲解,已经掌握的大佬们请直接跳过
首先, $\varphi(n)$ 的定义是在小于 $n$ 的正整数中,与 $n$ 互质的数的个数
因此,我们先考虑一下,假设存在一个质数 $p$
那么, $p$ 的因数只有 $1$ 和 $p$
在小于 $p$ 的正整数中,不存在任何数含有因数 $p$
因此, $p$ 和任意比它小的正整数都互质
也就是性质1 $\varphi(p)=p-1$ ( $p-1$ 个数比它小)
接下来,我们考虑 $p^k,k \in Z_+$ 且 $k>1$
$p^k$ 有且仅有质因数 $p$
且比它小的 $(p^k-1)$ 个数中,存在一下几个数也含有质因数 $p$
$p,2p,3p,4p......(p^{k-1}-1)p$
共 $(p^{k-1}-1)$ 个数
因此,剩余的 $(p^k-1)-(p^{k-1}-1)=(p^k-p^{k-1})$ 个数都与之互质
于是我们可以把 $k=1$ 看成这个的一个特例
于是我们得到性质2 $\varphi(p^k)=p^k-p^{k-1},k \in Z_+$
同时,又因为 $\varphi(p^{k+1})=p^{k+1}-p^k=p\times(p^k-p^{k-1})$
所以,还能得到性质3 $\varphi(p^{k+1})=p \times \varphi(p^k)$
接下来,我们考虑 $\varphi(p_1^{k_1} p_2^{k_2})$
$(p_1 \neq p_2$ 且 $p_1,p_2$ 为质数 $,k_1,k_2 \in Z_+)$
那么,在比它小的 $(p_1^{k_1} p_2^{k_2}-1)$ 个数中
$p_1,2p_1,3p_1,4p_1......,(p_1^{k_1-1} p_2^{k_2}-1)p_1$ 共 $(p_1^{k_1-1} p_2^{k_2}-1)$ 个数与它的最大公因数中含 $p_1$
同理,共 $(p_1^{k_1} p_2^{k_2-1}-1)$ 个数与它最大公因数含 $p_2$
但是,这里还有这重复枚举
$p_1p_2,2p_1p_2,3p_1p_2,4p_1p_2......(p_1^{k_1-1} p_2^{k_2-1}-1)p_1p_2$ 共 $(p_1^{k_1-1} p_2^{k_2-1}-1)$ 个数被重复枚举
因此,根据容斥原理,我们可以得到
$\varphi(p_1^{k_1}p_2^{k_2})$
$=(p_1^{k_1} p_2^{k_2}-1)-(p_1^{k_1-1} p_2^{k_2}-1)-(p_1^{k_1} p_2^{k_2-1}-1)+(p_1^{k_1-1} p_2^{k_2-1}-1)$
$=p_1^{k_1} p_2^{k_2}-p_1^{k_1-1} p_2^{k_2}-p_1^{k_1} p_2^{k_2-1}+p_1^{k_1+1} p_2^{k_2+1}$
$=(p_1^{k_1}-p_1^{k_1-1})(p_2^{k_2}-p_2^{k_2-1})$
又因为根据性质2,有
$\varphi(p_1^{k_1})=(p_1^{k_1}-p_1^{k_1-1}),\varphi(p_2^{k_2})=(p_2^{k_2}-p_2^{k_2-1})$
因此,带入上式得到性质4 $\varphi(p_1^{k_1}p_2^{k_2})=\varphi(p_1^{k_1})\varphi(p_2^{k_2})$
综合以上5个性质,我们假设 $n=\Pi_{i=1}^mp_i^{k_i}$
可得性质6 $\varphi(n)=\varphi(\Pi_{i=1}^mp_i^{k_i})=\Pi_{i=1}^m\varphi(p_i^{k_i})=\Pi_{i=1}^m(p_i^{k_i}-p_i^{k_i-1})$
故此,我们对任意数的欧拉函数值都可求了
同样的,性质6整理还可得到
性质7 $\varphi(n)=\Pi_{i=1}^m(p_i^{k_i}-p_i^{k_i-1})=\Pi_{i=1}^mp_i^{k_i}(1-{1 \over p_i})=n\Pi_{i=1}^m(1-{1 \over p_i})$
因此,对于本蒟蒻所知的 $\varphi(n)$ 函数性质已经全部讲完(愣是码了三天......)
那么,我们开始讲线性筛
参考素数的线性筛,为了保证时间的线性,那么,就必须保证每个数只筛到一次
为了保证每个数只被筛到一次,一定要保证其只被其最小素因数筛到过
那么,线性筛 $\varphi(n)$ 也是一样
对于枚举到的 $i(i \geq 2)$,我们用 $pf_i$ 储存它的最小质因数
倘若出现 $pf_i=0$,则说明 $i$ 的最小质因数在 $2$~$(i-1)$ 都并未出现
因此,足以证明 $i$ 为质数
所以,$pf_i=i,\varphi(i)=i-1$ ,并将 $i$ 存入到质数表中
接下来,无论 $i$ 是否为质数,直接在质数表中枚举质数 $prime_j$
倘若 $prime_j \leq pf_i$ 那么,显然 $pf_{i \times prime_j}=prime_j$
若 $prime_j|i$ 那么就说明 $i$ 含有质因数 $prime_j$
因此, $\varphi(i \times prime_j)=prime_j \times \varphi(i)$
否则,说明不含
则 $\varphi(i \times prime_j)=\varphi(prime_j) \times \varphi(i)$
倘若 $prime_j > pf_i$ 那么,数 $i\times prime_j$ 将被数 ${i \times prime_j \over pf_i}$ 筛到,这里可以直接开始跳出
最后,注意质数表的大小和 $i \times prime_j$ 的大小
我就是这个地方被卡了好多次......