Visible Lattice Points 欧拉函数应用

来源:互联网 发布:windows 2012 组策略 编辑:程序博客网 时间:2024/06/05 09:51

/*根据题意。如果该点是不可见的。则必定经过整数点。也就是非互质。相反,如果是可见的,那么必定是互质的。则题目转为求1-n内的互质点对数。即为求1-ai(i:1-n)内的欧拉函数值。可现在1-n的范围内用递推打表生成欧拉函数值。*/#include <stdio.h>const int maxn=1001;int phi[maxn];void get_phi()//获取1-maxn范围内的欧拉函数表{    for(int i=1;i<=maxn;i++) phi[i]=i;    for(int i=2;i<=maxn;i+=2) phi[i]/=2;    for(int i=3;i<=maxn;i+=2) if(phi[i]==i)    {        for(int j=i;j<=maxn;j+=i)        phi[j]=phi[j]/i*(i-1);    }    for(int i=2;i<maxn+1;i++)    phi[i]+=phi[i-1];//预处理出前n项内互素的对数}int main(){    int t,n;    scanf("%d",&t);    get_phi();    for(int i=1;i<=t;i++)    {        scanf("%d",&n);        printf("%d %d %d\n",i,n,phi[n]*2+1);    }    return 0;}


原创粉丝点击