POJ3090Visible Lattice Points

Posted wzj-xhjbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ3090Visible Lattice Points相关的知识,希望对你有一定的参考价值。

题目大意:求 [sumlimits_{i=2}^nphi(i)]

题解:利用与埃筛类似的操作,可在 (O(nlogn)) 时间求出结果。

代码如下

#include <cstdio>
using namespace std;
const int maxn=3010;

int kase,n,phi[maxn];

int main(){
    int T;scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i=2;i<=n;i++)phi[i]=i;
        for(int i=2;i<=n;i++)if(i==phi[i])
            for(int j=i;j<=n;j+=i)
                phi[j]=phi[j]/i*(i-1);
        long long ans=3;
        for(int i=2;i<=n;i++)ans+=(phi[i]<<1);
        printf("%d %d %lld
",++kase,n,ans);
    }
    return 0;
}

以上是关于POJ3090Visible Lattice Points的主要内容,如果未能解决你的问题,请参考以下文章

poj3090 Visible Lattice Points [欧拉函数]

POJ3090Visible Lattice Points

POJ3090:Visible Lattice Points——题解

poj3090 Visible Lattice Points

POJ_3090 Visible Lattice Points 欧拉函数 + 递推

[poj] 3090 Visible Lattice Points