原根小结 (poj 1284)

来源:互联网 发布:w3cschool java 编辑:程序博客网 时间:2024/06/13 19:59

关于原根的一些知识点:

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

定义1:,使得成立的最小的,称为对模的阶,记为


定理1:如果模有原根,那么它一共有个原根。


定理2:,则


定理3:如果为素数,那么素数一定存在原根,并且模的原根的个数为


定理4:是正整数,是整数,若的阶等于,则称为模的一个原根。


   假设一个数对于模来说是原根,那么的结果两两不同,且有,那么可以称为是模的一个原根,归根到底就是当且仅当指数为的时候成立。(这里是素数)


定理5:模有原根的充要条件:,其中是奇素数。

 


求模素数原根的方法:素因子分解,即的标准分解式,若恒有


          


成立,就是的原根。(对于合数求原根,只需把换成即可)

以上内容转自http://blog.csdn.net/acdreamers/article/details/8883285


我的补充:

1.如果g为p的原根,则:g^i mod p ≠ g^j mod p (p为素数), 其中i ≠ j且i, j介於1至(p-1)之间


求原根的代码:


题目:

poj 1284
题意:
给出一个数n,求原根数目。
限制:
3 <= n < 65536; n为奇素数。
思路:
因为n是素数,所以模n的原根数=phi(phi(n))=phi(n-1)。
phi(i) 可以预处理出来。


0 0
原创粉丝点击