POJ1284 Primitive Roots (原根)
Posted xxzh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ1284 Primitive Roots (原根)相关的知识,希望对你有一定的参考价值。
题目链接:http://poj.org/problem?id=1284
题目描述:
题目大意:
一个质数原根的个数
题解:
结论题
一个数n的原根的个数等于$varphi(varphi(n))$
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int N=65536+15; int p,tot; int vis[N],prime[N],phi[N]; void get_phi() { phi[1]=1; for (int i=2;i<=N;i++) { if (!vis[i]) { prime[++tot]=i; phi[i]=i-1; } for (int j=1;j<=tot&&prime[j]*i<=N;j++) { vis[prime[j]*i]=1; if (i%prime[j]==0) { phi[i*prime[j]]=phi[i]*prime[j]; break; } else phi[i*prime[j]]=phi[i]*(prime[j]-1); } } } int main() { get_phi(); while (scanf("%d",&p)!=EOF) { printf("%d ",phi[p-1]); } return 0; }
以上是关于POJ1284 Primitive Roots (原根)的主要内容,如果未能解决你的问题,请参考以下文章