#include<stdio.h>
#define MAX_N 65536
int euler[MAX_N];
void init_euler()
{
int i,j;
for(i=0;i<MAX_N;i++)
euler[i]=i;
for(i=2;i<MAX_N;i++)
{
if(euler[i]==i)
for(j=i;j<MAX_N;j+=i)
{
euler[j]=euler[j]/i*(i-1);
}
}
}
int main()
{
int a;
init_euler();
while(~scanf("%d",&a))
{
printf("%d\n",euler[a-1]);
}
return 0;
}
poj 1284 求一个数的原根个数
最新推荐文章于 2021-03-07 00:15:42 发布