[POJ3090]Visible Lattice Points(欧拉函数)

答案为3+2*∑φ(i),(i=2 to n)

Code

#include <cstdio>
int T,n,A[1010];
void Init(){
	for(int i=2;i<=1000;++i)A[i]=i;
	for(int i=2;i<=1000;++i)
		if(A[i]==i)for(int j=i;j<=1000;j+=i)
			A[j]=A[j]/i*(i-1);
	for(int i=3;i<=1000;++i)A[i]+=A[i-1];	
}
int main(){
	Init(),scanf("%d",&T);
	for(int i=1;i<=T;++i){
		scanf("%d",&n);
		printf("%d %d %d\n",i,n,3+2*A[n]);
	}
	return 0;
}

 

posted @ 2018-07-21 16:25  void_f  阅读(155)  评论(0编辑  收藏  举报