题目:

设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)

给出1个质数P,找出P最小的原根。

Input

输入1个质数P(3 <= P <= 10^9)

Output

输出P最小的原根。

Input示例

3

Output示例

2

分析:

原根的板子题了。

原根知识详解: 点我萌萌哒

实现:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const int maxn = 100000 + 131;
  5. vector<LL> Primes;
  6. bool Jug[maxn];
  7. void Make_Primes() { /// 素数打表
  8. Primes.clear();
  9. memset(Jug, false, sizeof(Jug));
  10. for(LL i = 2; i <= maxn; ++i)
  11. {
  12. if(Jug[i] == false) {
  13. Primes.push_back(i);
  14. for(LL j = i + i; j <= maxn; j += i)
  15. Jug[j] = true;
  16. }
  17. }
  18. }
  19. vector<LL> Pi;
  20. void GetPi(LL X) { /// 获得 x 的质因子
  21. Pi.clear();
  22. LL mx = Primes.size();
  23. for(LL i = 0; i < mx && Primes[i] * Primes[i] <= X; ++i)
  24. {
  25. if(X % Primes[i] == 0) {
  26. Pi.push_back(Primes[i]);
  27. while(X % Primes[i] == 0) X /= Primes[i];
  28. }
  29. }
  30. if(X > 1) Pi.push_back(X);
  31. }
  32. LL Pow(LL a, LL n, LL mod) { /// 快速幂取摸
  33. LL ret = 1;
  34. while(n) {
  35. if(n & 1) ret = ret * a % mod;
  36. a = a * a % mod;
  37. n >>= 1;
  38. }
  39. return ret;
  40. }
  41. bool JugAx(LL tmp, LL P) { /// 判断 tmp 是否是 P 原根
  42. for(int i = 0; i < Pi.size(); ++i)
  43. {
  44. if(Pow(tmp, (P-1)/ Pi[i], P) == 1)
  45. return false;
  46. }
  47. return true;
  48. }
  49. int main() {
  50. LL P;
  51. Make_Primes();
  52. while(cin >> P) {
  53. GetPi(P-1);
  54. for(LL i = 2; i <= P-1; ++i)
  55. {
  56. if(JugAx(i, P)) {
  57. cout << i << endl;
  58. break;
  59. }
  60. }
  61. }
  62. return 0;
  63. }

51nod--1135 原根 (数论)的更多相关文章

  1. 51nod 1135 原根 (数论)

    题目链接 建议与上一篇欧拉函数介绍结合食用. 知识点:1.阶:a和模m互质,使a^d≡1(mod m)成立的最小正整数d称为a对模m的阶(指数)   例如: 2^2≡1(mod3),2对模3的阶为2; ...

  2. 51nod 1135 原根

    题目链接:51nod 1135 原根 设 m 是正整数,a是整数,若a模m的阶等于φ(m),则称 a 为 模m的一个原根.(其中φ(m)表示m的欧拉函数) 阶:gcd(a,m)=1,使得成立的最小的 ...

  3. (数论)51NOD 1135 原根

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

  4. 51nod 1135 原根(原根)

    题意 题目链接 Sol 可以证明素数的原根不会超过他的\(\frac{1}{4}\) 那么预处理出\(P - 1\)的所有的质因数\(p_1, p_2 \dots p_k\),暴力判断一下,如果$\e ...

  5. 51nod 1135 原根 就是原根...

    %%% dalao Orz ,筛素数到sqrt(n),分解ϕ(p),依次枚举判断就好了 #include<cstdio> #include<cstring> #include& ...

  6. 51Nod 1135:元根(数论)

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

  7. 【51NOD】1135 原根

    [题意]给定p,求p的原根g.3<=p<=10^9. [算法]数学 [题解]p-1= p1^a1 * p2^a2 * pk^ak,g是p的原根当且仅当对于所有的pi满足g^[ (p-1)/ ...

  8. 51nod 1010 stl/数论/二分

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1010 1010 只包含因子2 3 5 基准时间限制:1 秒 空间限制:1 ...

  9. 51 Nod 1135 原根

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

  10. 51nod 约数和(数论)

    题目链接: 约数和 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 有三个下标从1到n的数组a.b.c. a数组初始全为0. b[i]=∑j|ia[j] c[i]=∑j|ib[j] ...

随机推荐

  1. SpringBoot开发案例之拦截器注入Bean

    前言 由于业务需要,需要在拦截器中操作Redis缓存,按照 controller,service层配置发现无法注入,一直报空指针异常. 解决方案 @Configuration public class ...

  2. Python变量的本质与intern机制

    变量的存储 a = 'abc' 理解:①先在内存中生成一个字符串‘abc’ ②可以把比变量名a看做一个便利贴,然后将a贴到‘abc’中     ③注意顺序,是生成‘abc’,然后再创建a指向‘abc’ ...

  3. BugPhobia开发篇章:Beta阶段第VII次Scrum Meeting

    0x01 :Scrum Meeting基本摘要 Beta阶段第七次Scrum Meeting 敏捷开发起始时间 2015/12/19 00:00 A.M. 敏捷开发终止时间 2015/12/21 23 ...

  4. Oracle的表被锁后的恢复

    运行下列SQL,找出数据库的serial#,执行结果如下图所示 SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME   FROM V$LOCKE ...

  5. Sql JOIN 一张图说明

    一图说明:

  6. T66597 小xzy的任务 题解

    T66597 小xzy的任务 题目背景 今天,小xzy的班主任交给他一个严肃的任务,匹配羽毛球运动员! ! ! 题目描述 羽毛球队有男女运动员各n人.给定2个n×n矩阵P和Q.Pij​是男运动员i和女 ...

  7. Java基础:Java简介及安装配置(1)

    Java简介 Java是Sun公司于1995年推出的高级编程语言,具有跨平台特性,编译后的程序能够运行在多种类型的操作系统平台上. 1.1 Java应用程序版本 Java的3个独立用于开发不同类型应用 ...

  8. AirBnB春招笔试题

    试题说明 笔试题只有一道,限时1小时. 模拟一个战争外交游戏,游戏中定义了三种操作: A city1 Hold : 军队A 占领了city1 A city1 Move city2 : 军队A从city ...

  9. C/C++ const

    一 含义 const修饰的变量在C和C++中的含义是什么?一样吗? 在C中用const修饰的变量仅仅表示这个符合表示的变量不能被赋值,是只读的,那么它与常量有啥区别呢?区别就是一个是常量,一个是变量. ...

  10. 初识 go 语言:方法,接口及并发

    目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...