题意

题目链接

Sol

可以证明素数的原根不会超过他的\(\frac{1}{4}\)

那么预处理出\(P - 1\)的所有的质因数\(p_1, p_2 \dots p_k\),暴力判断一下,如果$\exists i, a^{\frac{P - 1}{p_i}} \equiv 1 \pmod {P - 1} $

那么说明\(a\)不是\(P\)的原根,因为根据原根的定义,需要保证\(P-1\)是第一个满足\(a^{P - 1} \equiv 1 \pmod {P - 1}\)的数

#include<cstdio>
using namespace std;
const int MAXN = 1e6 + 10;
int fp(int a, int p, int mod) {int base = 1;while(p) {if(p & 1) base = 1ll * base * a % mod; a = 1ll * a * a % mod; p >>= 1;}return base;
}
int GetG(int x) {static int q[MAXN]; int tot = 0, tp = x - 1;for(int i = 2; i * i <= tp; i++) {//这里是i * i if(!(tp % i)) {q[++tot] = i;while(!(tp % i)) tp /= i;}}if(tp > 1) q[++tot] = tp;for(int i = 2, j; i <= x - 1; i++) {for(j = 1; j <= tot; j++) if(fp(i, (x - 1) / q[j], x) == 1) break;if(j == tot + 1) return i;}
}
int main() {int P;scanf("%d", &P);printf("%d", GetG(P));return 0;
}
/*
1000000007
*/

51nod 1135 原根(原根)相关推荐

  1. 51nod 1135 原根(求素数最小原根)

    题目链接: 51nod 1135 原根 题意: 求素数p的最小原根. #include <stdio.h> #include <algorithm> #include < ...

  2. 初等数论--原根--原根间的关系,原根个数

    初等数论--原根--原根间的关系,原根个数 博主是初学初等数论(整除+同余+原根),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找:如果有错,欢迎指正. 我整理成一个系列:初等数论,方便 ...

  3. (数论)51NOD 1135 原根

    设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) 给出1个质数P,找出P最小的原根. Input 输入1个质数P(3 <= P < ...

  4. 【数论与组合数学 3】Hensel 引理、原根

    Hensel 引理.原根 一.Hensel 引理 Hensel 引理: f ( x ) \mathsf{f(x)} f(x) 是一个整系数多项式 ( f ( x ) ∈ Z ( x ) ) \math ...

  5. Primitive root

    高大上的数论,先入门再说. 原根的定义可以到wiki上找,上面介绍得很清楚. 如果你是个热(bu)爱(dong)祖(ying)国(yu)的人,看这个blog就行了 1.51nod 1135 奇怪的oj ...

  6. 【学习笔记】之多项式使人头秃

    真的自闭= = 多项式是什么鬼哦 首先 介绍 FFT 我才不想写那么多柿子呢 大体说一下FFT干了啥 我们对两个多项式进行卷积(即多项式乘法)  也就是  暴力计算的话是n^2的 我们考虑把它变成点值 ...

  7. NOIP模拟测试9「随·单·题」

    liu_runda出的题,先$\%\%\%\%\%\%\%\%\%\%\%$为敬 随 考试时没有Qj 然后甚至没做,甚至没交 我不知道我怎么想的 这个题挺难改 你需要用到 循环矩阵快速幂,矩阵快速幂优 ...

  8. 快速傅里叶变换学习笔记(更新中)

    快速傅里叶变换(FFT)学习笔记 简介 快速傅里叶变换($ \rm Fast Fourier Transformation $), 简称 \(\rm FFT\), 用于在 $ \Theta(n\log ...

  9. 【数论】ACM数论基础知识总结

    文章目录 一.质数 1.定义 2.质数的判断 3.质数的筛选 4.质因子分解 5.互质 二.同余 1.模运算 2.同余 3.欧拉定理 4.同余方程 5.同余方程组 6.原根 7.高次同余方程 数论是数 ...

  10. 多项式算法2:NTT(快速数论变换)

    多项式算法2:NTT(快速数论变换) 前言 前置知识 正文 前言 算法简介 上次的FFT大量使用浮点数,有精度不好控制的问题,使用可以保证精度的方法又容易超时.这里NTT是在取模的一个前提下找到一个新 ...

最新文章

  1. elasticsearch 结构化搜索_在案例中实战基于range filter来进行范围过滤
  2. RemoveError: 'setuptools' is a dependency of conda and cannot be removed from
  3. python游戏脚本实例-使用Python写一个贪吃蛇游戏实例代码
  4. 径向基函数插值(2)一维数据的插值
  5. app.vue里使用data_Yeoman自定义Generator使用案例及Plop的使用
  6. u盘正常接入后计算机无法看到,u盘在我的电脑显示不出来怎么办-处理u盘在我的电脑无法显示的方案 - 河东软件园...
  7. Netflix视频质量感知评价模型之路
  8. 论文浅尝 | 以知识图谱为基础的开放域对话生成的目标规划
  9. ftrace 的使用【转】
  10. can接收id过滤linux,linux – 很大程度上被candump(SocketCAN)ID过滤功能搞糊涂了
  11. R语言笔记 画多个图
  12. 服务器存储扩容技术文档,扩容服务器存储空间
  13. ArcGIS for Android 100.3的学习与应用(三) 实现地图添加自定义指北针
  14. 新浪云python开发_Python开发入门与实战17-新浪云部署
  15. Hackthebox入门
  16. 计算机键盘能直接接手机吗,电脑键盘怎么连接手机
  17. 微软TTS服务器,微软TTS,Neospeech TTS 简单使用
  18. iOS 金币入袋(收金币)动画
  19. 思维【敏捷开发ACP】总目录
  20. E3-1230V3和E3 1231V3有什么区别

热门文章

  1. 自然语言处理——语言模型(一)
  2. 博文视点在SD2.0大会上以书会友
  3. 线程与进程的区别及其通信方式
  4. Linux重启nfs出现没有权限,Linux NFS搭建与错误提示解决
  5. python数据分析模型选择_python学习-数据分析2(分类型数据处理+SVM建模)
  6. sql中的join问题
  7. 力扣-62 不同路径
  8. Android setOnPageChangeListener 过时解决
  9. 设置电脑右下角显示自己的大名
  10. .NET/CLI元数据中使用的压缩整数