题解:

显然当坐标不互质的时候

是可以看得见的

所以线性筛选欧拉函数

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=80005;
int n,ans,p[N],phi[N],prime[N];
void getphi()
{
    phi[1]=1;
    for (int i=2;i<=n;i++)
     {
        if (!p[i])
         {
            prime[++prime[0]]=i;
            phi[i]=i-1;
         }
        for (int j=1;j<=prime[0]&&i*prime[j]<=N;j++)
         {
            p[i*prime[j]]=1;
            if (i%prime[j]==0)
             {
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
             }
            else phi[i*prime[j]]=phi[i]*(prime[j]-1);
         }
     }
}
int main()
{
    scanf("%d",&n);
    if (n==1){puts("1");return 0;}
    if (n==2){puts("3");return 0;}
    getphi();
    for (int i=2;i<n;i++)ans+=phi[i];
    ans*=2;ans+=3;
    printf("%d\n",ans); 
}

 

posted on 2018-04-08 17:43  宣毅鸣  阅读(115)  评论(0编辑  收藏  举报