#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <cstdlib>
#define LL long long
using namespace std;
int phi[50010];
int ans;
void euler(int n)
{
int m=sqrt(n+0.5);
ans=n;
for(int i=2; i<=m; i++)if(n%i==0)
{
ans=ans/i*(i-1);
while(n%i==0)n=n/i;
}
if(n>1)ans=ans/n*(n-1);
}
int phi_table(int n)
{
memset(phi,0,sizeof(phi));
phi[1]=1;
for(int i=2; i<=n; i++)if(!phi[i])
{
for(int j=i; j<=n; j+=i)
{
if(!phi[j])phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
}
}
int main()
{
int n;
while(cin>>n&&n)
{
phi_table(n);
cout<<phi[n]<<endl;
}
return 0;
}
欧拉函数模板
最新推荐文章于 2024-07-26 03:45:22 发布