zoukankan      html  css  js  c++  java
  • 【POJ1284】Primitive Roots

    【题目大意】

    给你一个素数n,求n的原根个数。

    【题解】

    关于原根有一个定理:

    定理:如果模有原根,那么它一共有个原根。

    所以这题就是求phi[phi[n]]

    很简单吧。。。(如果知道这个定理的话)

     1 /**************
     2   POJ 1284
     3   by chty
     4   2016.11.10
     5 **************/
     6 #include<iostream>
     7 #include<cstdio>
     8 #include<cstdlib>
     9 #include<cstring>
    10 #include<ctime>
    11 #include<cmath>
    12 #include<algorithm>
    13 using namespace std;
    14 #define FILE "read"
    15 #define MAXN 70010
    16 int n,cnt,prime[MAXN],isprime[MAXN],phi[MAXN];
    17 inline int read()
    18 {
    19     int x=0,f=1;  char ch=getchar();
    20     while(!isdigit(ch))  {if(ch=='-')  f=-1;  ch=getchar();}
    21     while(isdigit(ch))  {x=x*10+ch-'0';  ch=getchar();}
    22     return x*f;
    23 }
    24 void get()
    25 {
    26     phi[1]=1;
    27     for(int i=2;i<=70000;i++)
    28     {
    29         if(!isprime[i])  prime[++cnt]=i,phi[i]=i-1;
    30         for(int j=1;j<=cnt&&prime[j]*i<=70000;j++)
    31         {
    32             isprime[prime[j]*i]=1;
    33             if(i%prime[j]==0)  {phi[prime[j]*i]=phi[i]*prime[j];break;}
    34             else phi[prime[j]*i]=phi[i]*(prime[j]-1);
    35         }
    36     }
    37 }
    38 int main()
    39 {
    40     freopen(FILE".in","r",stdin);
    41     freopen(FILE".out","w",stdout);
    42     get();
    43     while(~scanf("%d",&n))  printf("%d
    ",phi[phi[n]]);
    44     return 0;
    45 }
  • 相关阅读:
    android开发 软键盘出现后 防止EditText控件遮挡 总体平移UI
    jQuery中this与$(this)的差别
    纯手写wcf代码,wcf入门,wcf基础教程
    JavaScript权威指南第01章 JavaScript 概述
    Python
    微信支付界面中文乱码问题
    EasyUI基础入门之Pagination(分页)
    Maximum Subarray
    CF1063F String Journey
    排序
  • 原文地址:https://www.cnblogs.com/chty/p/6052158.html
Copyright © 2011-2022 走看看