欧拉函数

递推法虽然目前看不大懂,但是跟素数筛法差不多能记住。

代码

#include <bits/stdc++.h>
using namespace std;
int phi[10000005];
void db()
{
	memset(phi,0,sizeof(phi));
	phi[1]=1;
	for(int i=2;i<10000005;i++)
	{
		if(!phi[i])
		{
			for(int j=i;j<10000005;j+=i)
			{
				if(!phi[j]) phi[j]=j;
				phi[j]=phi[j]/i*(i-1);
			}
		}
	}
} 
main()
{
	db();
	int a;
	while(cin>>a)
	cout<<phi[a]<<endl;
}
posted @ 2018-10-16 19:14  baccano!  阅读(105)  评论(0编辑  收藏  举报