以左下角为原点,注意到只有横纵坐标公因数为1的点才可以被看到,欧拉函数求gcd(x,y)=1的对数即可。
#include<stdio.h>
int phi[50000];
void phi_table(int n)
{
phi[1]=1;
for(int i=2;i<n;i++) phi[i]=i;
for(int i=2;i<n;i++)
if(phi[i]==i)
{
for(int j=i;j<n;j+=i)
phi[j]=phi[j]/i*(i-1);
}
}
int main()
{
int n,ans=3;
scanf("%d",&n);
phi_table(n);
for(int i=2;i<n;i++)
ans+=phi[i]*2;
printf("%d",ans);
while(1);
return 0;
}