• poj_1284_原根


    一開始看题的时候第一想法就是暴力,可是无奈数据量有点大,看了题解之后才知道原来牵扯到数论上的一个叫做原根的东西,这个题的题意就是,给你一个奇素数,问题他的原根有多少。依据初等数论上所说,此时牵扯到了三个定理。
    1)全部的单素数都是有原根的
    2)一个数n有原根,那么他有phi(phi(n))个模n不同余的原根(n是否素数都可用)
    3)一个素数有原根。则有phi(n-1)个原根
    当中3是由1,2简单推得,那么之后这道题就非常easy了。

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <set>
    #include <cmath>
    #include <queue>
    #include <map>
    using namespace std;
    #define MAX(x,y) (((x)>(y))?(x):(y))
    #define MIN(x,y) (((x)<(y))?(x):(y))
    #define N 500010
    #define pi acos(-1.0)
    #define inf 100000000
    typedef long long ll;
    typedef unsigned long long ull;
    int phi[N];
    void phi_table(int n){                     //欧拉打表
        for(int i=2;i<=n;i++) phi[i]=0;
        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(){
        phi_table(70000);
        int n;
        while(scanf("%d",&n)==1){
            printf("%d
    ",phi[phi[n]]);
        }
        return 0;
    }
    
  • 相关阅读:
    MySQL主从复制
    高可用系列之Nginx
    02.PHP7.x编译详解
    01.PHP5.x编译详解
    月薪2500到年薪20+我经历了些什么?
    更换gitlab公网IP,引发的故障。
    博客资料汇总
    Nginx编译参数
    Zabbix3.0部署最佳实践
    SharePoint 2013让页面显示错误
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6743883.html
Copyright © 2020-2023  润新知