1.原根定义
欧拉定理(也称费马-欧拉定理或欧拉函数定理)是一个关于同余的性质。欧拉定理表明,若
为正整数,且
互素(即
),则
![a^{\varphi(n)} \equiv 1 \pmod n](http://upload.wikimedia.org/math/d/9/7/d97c2eef7c5358dc31374a6301b80a60.png)
![gcd(a,m)=1](http://upload.wikimedia.org/math/5/7/d/57d8be5f445d4b0edc952ba87e035fe7.png)
![a](http://upload.wikimedia.org/math/0/c/c/0cc175b9c0f1b6a831c399e269772661.png)
![m](http://upload.wikimedia.org/math/6/f/8/6f8f57715090da2632453988d9a1501b.png)
![Ord_m(a)](http://upload.wikimedia.org/math/d/7/c/d7cdbe6fe262ed6a74a5b0e96d1d3360.png)
![a^d \equiv 1 \pmod{m}](http://upload.wikimedia.org/math/e/4/a/e4ab1f40c7f989164eb4da88d716ff60.png)
![d](http://upload.wikimedia.org/math/8/2/7/8277e0910d750195b448797616e091ad.png)
![Ord_m(a)](http://upload.wikimedia.org/math/d/7/c/d7cdbe6fe262ed6a74a5b0e96d1d3360.png)
![\phi (m)](http://upload.wikimedia.org/math/b/d/6/bd658820ec6bc84f56ba2346aabd3403.png)
![Ord_m (a) = \phi (m)](http://upload.wikimedia.org/math/e/3/c/e3c69389d59d452172a1e5fb1cda005a.png)
![a](http://upload.wikimedia.org/math/0/c/c/0cc175b9c0f1b6a831c399e269772661.png)
![m](http://upload.wikimedia.org/math/6/f/8/6f8f57715090da2632453988d9a1501b.png)
2.如何求解:
一、枚举
从2开始枚举,然后暴力判断g^(P-1) = 1 (mod P)是否当且当指数为P-1的时候成立
二、讲究方法
例如求任何一个质数x的任何一个原根,一般就是枚举2到x-1,并检验。有一个方便的方法就是,求出x-1所有不同的质因子p1,p2...pm,对于任何2<=a<=x-1,判定a是否为x的原根,只需要检验a^((x-1)/p1),a^((x-1)/p2),...a^((x-1)/pm)这m个数中,是否存在一个数mod x为1,若存在,a不是x的原根,否则就是x的原根。
原来的复杂度是O(P-1),现在变成O(m)*log(P-1)m为x-1质因子的个数。很明显质因子的个数远远小于x-1。
证明可用欧拉定理和裴蜀定理:
裴蜀定理
说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式):
ax + by = m
有解当且仅当m是d的倍数。裴蜀等式有解时必然有无穷多个整数解,每组解x、y都称为裴蜀数,可用辗转相除法求得。
例如,12和42的最大公因子是6,则方程12x + 42y = 6有解。事实上有(-3)×12 + 1×42 = 6及4×12 + (-1)×42 = 6。
特别来说,方程 ax + by = 1 有解当且仅当整数a和b互素。
裴蜀等式也可以用来给最大公约数定义:d其实就是最小的可以写成ax + by形式的正整数。这个定义的本质是整环中“理想”的概念。因此对于多项式整环也有相应的裴蜀定理。
证明
代码:
来至http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1135的一道题目:
题目
<span id="Showjim86_bnbbbsbl_s39"></span>输入1个质数P(3 <= P <= 10^9)<span id="Showjim86_bnbbbsbl_e39"></span>
<span id="Showjim86_bnbbbsbl_s40"></span>输出P最小的原根。