何为原根?由费马小定理可知 如果a于p互质 则有a^(p-1)≡1(mod p)对于任意的a是不是一定要到p-1次幂才会出现上述情况呢?显然不是,当第一次出现a^k≡1(mod p)时, 记为ep(a)=k 当k=(p-1)时,称a是p的原根每个素数恰好有f(p-1)个原根(f(x)为欧拉函数)

定理:对于奇素数m, 原根个数为phi(phi(m)), 由于phi(m)=m-1, 所以为phi(m-1)。某大牛的证明:

{xi%p | 1 <= i <= p - 1} = {1,2,...,p-1} 等价于 {xi%(p-1) | 1 <= i <= p - 1} = {0,1,2,...,p-2},即为(p-1)的完全剩余系

若x,x2...x(p-1)是(p-1)的完全剩余系,

根据定理,可以推出若gcd(x, p-1) = 1时, (1,x,...,x(p-2))也是(p-1)的完全剩余系

因为若xi != xj (mod p-1),那么x*xi != x*xj (mod p-1),与条件m矛盾,所以 xi = xj (mod p-1),

由此可以确定答案为EulerPhi(p-1)

代码

#include<stdio.h>
#define maxn  66666
int euler[maxn+1];
int phi(int n)
{int res=n;for(int i=2;i*i<=n;i++){if(n%i==0){res=res-res/i;while(n%i==0)n/=i;}}if(n>1)res=res-res/n;return res;
}
//筛法范围打表  nlogn
void phi()
{for(int i=1;i<=maxn;i++)euler[i]=i;for(int i=2;i<=maxn;i+=2)euler[i]/=2;for(int i=3;i<=maxn;i++){if(euler[i]==i) //未被筛到。是素数,则用此素数来筛
        {for(int j=i;j<=maxn;j+=i){euler[j]=euler[j]/i*(i-1);}}}return ;
}
int main()
{int n;phi();while(scanf("%d",&n)!=EOF){printf("%d\n",euler[n-1]);}
}

转载于:https://www.cnblogs.com/oneshot/p/3979863.html

poj1284:欧拉函数+原根相关推荐

  1. POJ - 1284 Primitive Roots(原根+欧拉函数)

    题目链接:点击查看 题目大意:给出一个模数 p ,求 p 有多少个原根 题目分析:算是补充了一个知识点吧,模数 p 的原根个数为 p[ p[ n ] ] ,p 为欧拉函数 证明博客:https://b ...

  2. 原根(扩展欧几里得+欧拉函数)

    1135 原根 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) ...

  3. c++实现求解欧拉函数和本原根

    计算本原根 这里我不详细解释欧拉函数和本原根. 首先我们先了解求一个数的本原根的过程,以25为例: 25的本原根 1.在计算25的所有本原根时,首先我们要得到25的欧拉函数值可以知道25=5^2,其欧 ...

  4. 初等数论--同余--欧拉函数、欧拉定理、费马小定理

    初等数论--同余--欧拉函数.欧拉定理.费马小定理 概念 同余类,既约同余类 欧拉函数 完全剩余系,既约剩余系 关于完全剩余系.既约剩余系一些比较简单的定理 欧拉定理.费马小定理 博主是初学初等数论( ...

  5. 中高级数论 [欧拉函数线性筛,二次剩余]

    欧拉函数线性筛 对于素数ppp, φ(p∗i)={p−1i=1p∗φ(i)p∣i(p−1)∗φ(i)p∤i\varphi (p*i)= \begin{cases} p-1& i=1\\ p*\ ...

  6. 积性函数欧拉函数莫比乌斯函数

    积性函数 (积性函数). 如果算术函数fff对任意两个互素的正整数a和b,f(ab)=f(a)f(b)f(ab)=f(a)f(b)f(ab)=f(a)f(b),则fff被称为积性函数(或乘性函数):如 ...

  7. 容斥原理与欧拉函数与莫比乌斯函数,狄利克雷卷积与莫比乌斯变换,反演

    莫比乌斯函数可以看成是一种被内化了的容斥原理,许多数论上的结论定理根据容斥原理和数学归纳法可以推导出来,但是有关容斥原理的表达式的构造往往并不容易,运气不好很难找到,而莫比乌斯函数则是巧妙的把容斥原理 ...

  8. poj2154-color-polyan次二面体+欧拉函数优化

    N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) 1 /*-------------------------- ...

  9. hdu 1286( 欧拉函数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...

最新文章

  1. Python,Pandas,Bokeh Cheat Sheet-Data Science
  2. Silverlight 5 Beta 新特性预览
  3. egg前面加什么_跟 egg 有关的英语多半是贬义,goose egg 也八九不离十
  4. (扩展)欧几里德快速幂
  5. linux带宽最小的远程桌面,【图片】linux下哪种远程桌面服务最快?_linux吧_百度贴吧...
  6. php写入rabbit速度,RabbitMQ 入门教程(PHP) 实现延迟功能
  7. Vue前端路由(Vue-router)
  8. java获取资源文件的各种方法
  9. JS_call_APP native 与 html的交互
  10. 水晶报表之创建子报表
  11. (精华2020年5月12日更新) vue实战篇 axio.js封装和环境配置
  12. Airbnb如何应用AARRR策略成为全球第一民宿平台
  13. Python批量自动下载获取图片
  14. 利用Jquery自动生成条形码
  15. 当Idea的主菜单被不小心隐藏。
  16. unity 捕鱼达人鱼群的移动
  17. scipy稀疏矩阵lil_array
  18. 不完全免疫算法简介AIMA--AIS学习笔记7
  19. 【Linux练习生】进程间通信
  20. Low-Rank Solution of Lyapunov Equations(一)ADI算法

热门文章

  1. Delphi纯代码连SQLite数据库,同时支持数据库的加密解密
  2. Sqlserver 通用存储过程(二) 联合主键
  3. MySQL水平分区代理Spock Proxy(一)
  4. 2017年秋招-广联达面试及思考
  5. 【python】r+,w+ 全局变量
  6. .NET MVC异步调用中的Session问题
  7. 以太网和局域网的关系
  8. linux mc服务器 mod_如何在linux搭建MC服务器
  9. python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名
  10. python中的元组操作