poj 2478

原来欧拉函数也存在递推关系。

代码:

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

using namespace std;


long long b[1000001];
int n;

void read(){
//	ifstream cin("in.txt");
	int i,j,k,ans;
	for(i=2;i<=1000000;i++)
		b[i]=i;
	for(i=2;i<=1000000;i+=2)
		b[i]/=2;
	for(i=3;i<=1000000;i+=2)
		if(b[i]==i)
			for(j=i;j<=1000000;j+=i)
				b[j]=b[j]/i*(i-1);
	for(i=2;i<=1000000;i++)
		b[i]+=b[i-1];

	while(cin>>n){
		if(n==0) return;
		cout<<b[n]<<endl;
	}
}


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

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

导航