文章目录

  • Description
  • 题意:
  • 题解:
  • 代码:

Poj 1284

Time Limit: 1000MS       Memory Limit: 10000K
Total Submissions: 6485     Accepted: 3697

Description

We say that integer x, 0 < x < p, is a primitive root modulo odd prime
p if and only if the set { (xi mod p) | 1 <= i <= p-1 } is equal to {
1, …, p-1 }. For example, the consecutive powers of 3 modulo 7 are
3, 2, 6, 4, 5, 1, and thus 3 is a primitive root modulo 7. Write a
program which given any odd prime 3 <= p < 65536 outputs the number of
primitive roots modulo p.

Input

Each line of the input contains an odd prime numbers p. Input is
terminated by the end-of-file seperator.

Output

For each p, print a single number that gives the number of primitive
roots in a single line.

Sample Input

23
31
79

Sample Output

10
8
24

题意:

给定一个p,存在一个x,使得xi%p的值的集合(i的范围是1~p-1)是{1,2…p-1},求出x是多少?

题解:

数论题,涉及欧拉公式
先介绍一个概念:
设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)
假设一个数g对于P来说是原根,那么gi mod P的结果两两不同,且有 1<g<P, 0<i<P,那么g可以称为是P的一个原根,归根到底就是g(P-1) = 1 (mod P)当且仅当指数为P-1的时候成立.(这里P是素数).
选自百度百科
结合到本题,x就是p的一个原根,那我们只需要找到满足xp-1=1(mod P)这个式子就可以,这个式子也就是欧拉公式的φ(p-1)
欧拉公式的讲解可以看这里

代码:

#include<iostream>
using namespace std;
typedef long long ll;
ll Euler(ll n){ll res=n;for(ll i=2;i*i<=n;i++){if(n%i==0){n/=i;res=res-res/i;}while(n%i==0)n/=i;}if(n>1)res=res-res/n;return res;
}
int main()
{int p;while(cin>>p){cout<<Euler(p-1)<<endl;}return 0;
}

Poj 1284 Primitive Roots相关推荐

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

    http://poj.org/problem?id=1284 原根 题意:对于奇素数p,假设存在一个x(1<x<p),(x^i)%p两两不同(0<i<p),且解集等于{1,2. ...

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

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

  3. Codeforces Round #174 (Div. 2) Cows and Primitive Roots(数论)

    Cows and Primitive Roots time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  4. 原根 poj 1284

    原根定义:假设一个数g对于P来说是原根,那么g^i mod P的结果两两不同,          且有 1<g<P, 1<i<P,那么g可以称为是P的一个原根 简单来说,g^i ...

  5. poj-1284(Primitive Roots)(欧拉函数运用)

    题目链接:http://poj.org/problem?id=1284 题意:求解p的原根的个数,此题p是素数,φ(p) = p - 1; 题解:定理:设 p > 1是整数,如果模p存在一个原根 ...

  6. POJ1284:Primitive Roots——题解

    http://poj.org/problem?id=1284 给一个奇质数p,求p的原根数量. 有一个结论:当正整数n存在原根时,其一共有phi(phi(n))个不同余的原根. 所以答案为phi(p- ...

  7. poj1284 Primitive Roots

    考虑互质的两个数a < n, a是n的原根当且仅当对任意的p < φ(n)有ap mod n ≠ 1(φ(n)是n的欧拉函数). 也即等价于集合ap(p < φ(n)) 与n的简化剩 ...

  8. POJ 3471 Integral Roots(素数、因数)

    题目链接:http://poj.org/problem?id=3471 题意:给出一个多项式f(x),求f(x)=0所有的整数根. 思路:由于求的是f(x)的整数根,设它的整数根分别为x1,x2--, ...

  9. Primitive roots

    指数与原根的定义: 设m>1, (a,m)=1 则使 a^r=1(mod m) 成立的最小正整数r,称为a对模m的指数,记符号为delta: 根据Euler定理,知道r=phi(m)的时候成立 ...

最新文章

  1. 同一label显示不同字体
  2. 【LeetCode笔记】剑指 Offer 16. 数值的整数次方(Java、分治)
  3. C++ 判断进程是否存在
  4. 可以在线测试血糖的软件,血糖也能自己测,糖护士荷智能血糖仪体验:测血糖就这么简单...
  5. eclipse创建第一个JSP项目
  6. 增值税计算机模拟纳税申报,增值税纳税申报系统中的CBR方法实现
  7. 给初学日语者的几点建议——词汇篇
  8. EasyExcel自动设置列宽
  9. 学习java的第十七天,房贷简易计算器,三角形判断、面向对象重写方法的学习
  10. 学大数据一定要会Java开发吗?
  11. Vuetify学习笔记(一)gird栅格系统
  12. Iaas、Paas、Saas都是什么意思?
  13. gdc函数(最大公约数)
  14. 轻型货车鼓式制动器设计(论文+CAD图纸+Catia三维图+开题报告+任务书+翻译……)
  15. 服务器被入侵,执行了2个非常危险的命令
  16. 【PC】电子书阅读软件推荐
  17. 十万行业质变正当时:华为云解出了一道产业AI公式
  18. [淘宝客技术篇006]如何登录阿里妈妈-《登录淘宝网·二维码实现法》(下)
  19. 基于 layui 的纯前端框架 cy-ui
  20. 大数据时代中的差旅管理

热门文章

  1. 按照学号查找学生_[源码和文档分享]基于JAVA和MYSQL数据库的学生成绩管理系统...
  2. JDK安装及java环境配置_JDK安装及Java环境变量配置
  3. matlab 抽样判决代码,matlab抽样判决器
  4. 凉凉!面试阿里我被Redis技术专题给搞的昏倒在地~
  5. python +appium实现原理_python_appium使用原理
  6. egg前面加什么_国威说阀:阀门前面为什么加国标美标日标之类的?
  7. require引入js vue_请教 关于使用require 引入vue 和公共js的问题
  8. win10右键一直转圈_Win10电脑开机一直转圈无法进入系统的解决方法
  9. c语言中文件如何插入数据,急求如何将下列C语言程序数据存储到文件中?
  10. 455. 分发饼干001(贪心算法+详解)