poj 3090

递推欧拉函数。

代码:

#include<iostream>
#include<fstream>
#include<cmath>

using namespace std;


int b[1001];
int n;

void read(){
//	ifstream cin("in.txt");
	int i,j,k,ans;
	for(i=2;i<=1000;i++)
		b[i]=i;
	for(i=2;i<=1000;i+=2)
		b[i]/=2;
	for(i=3;i<=1000;i+=2)
		if(b[i]==i)
			for(j=i;j<=1000;j+=i)
				b[j]=b[j]/i*(i-1);
	for(i=2;i<=1000;i++)
		b[i]+=b[i-1];
	cin>>k;
	n=k;
	while(k--){
		cin>>i;
		printf("%d %d %d\n",n-k,i,2*b[i]+3);
	}
}


int main(){
	read();
	return 0;
}

posted on 2011-03-31 11:31  宇宙吾心  阅读(189)  评论(0)    收藏  举报

导航