原根(模板+证明)

Posted H-w-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原根(模板+证明)相关的知识,希望对你有一定的参考价值。

原根

定义:

m ∈ N ∗ m\\in\\mathbb{N^*} mN, a ∈ Z a\\in\\mathbb{Z} aZ.若 ( a , m ) = 1 (a,m)=1 (a,m)=1,且 δ m ( a ) = ϕ ( m ) \\delta_m(a)=\\phi(m) δm(a)=ϕ(m),则称 a a a为模 m m m的原根(注: a , m a,m am互质).

原根判定定理

g g g是模 m m m的一个原根,则对于 ϕ ( m ) \\phi(m) ϕ(m)的任何大于 1 1 1且不为自身的因数 p p p,都有 g ϕ ( m ) p ≡ 1 ( m o d   m ) g^{\\frac{\\phi(m)}p}\\equiv1(mod~m) gpϕ(m)1(mod m).

证明:

假设存在一个 t < μ ( m ) t<\\mu(m) t<μ(m)使得 a t ≡ 1 ( m o d   m ) a^t\\equiv1(mod~m) at1(mod m) ∀ i ∈ [ 1 , k ] : a ϕ ( m ) d i ≡ 1 ( m o d   m ) \\forall i\\in[1,k]:a^{\\frac {\\phi(m)}{d_i}}\\equiv1(mod~m) i[1,k]:adiϕ(m)1(mod m).

由裴蜀定理得,一定存在一组 k , x k,x kx满足 k t = x ϕ ( m ) + ( t , μ ( m ) ) kt=x\\phi(m)+(t,\\mu(m)) kt=xϕ(m)+(t,μ(m)); 由欧拉定理 / / /费马小定理得 a ϕ ( p ) ≡ 1 ( m o d   p ) a^{\\phi(p)}\\equiv1(mod~p) aϕ(p)1(mod p);

∴ 1 ≡ a k t ≡ a x ϕ ( m ) a ( t , ϕ ( m ) ) ≡ a ( t , ϕ ( m ) ) ( m o d   m ) \\therefore 1\\equiv a^{kt}\\equiv a^{x\\phi(m)}a^{(t,\\phi(m))}\\equiv a^{(t,\\phi(m))}(mod~m) 1aktaxϕ(m)a(t,ϕ(m))a(t,ϕ(m))(mod m)

∵ t < ϕ ( m )   ∴ ( t , ϕ ( m ) ) ≤ t < ϕ ( m ) \\because t<\\phi(m)~\\therefore(t,\\phi(m))\\le t<\\phi(m) t<ϕ(m) (t,ϕ(m))t<ϕ(m)

∵ ( t , ϕ ( m ) ) ∣ ϕ ( m ) , ∴ ( t , ϕ ( m ) ) 一 定 至 少 整 除 ϕ ( m ) d i 中 的 至 少 一 个 \\because (t,\\phi(m))|\\phi(m),\\therefore(t,\\phi(m))一定至少整除\\frac {\\phi(m)}{d_i}中的至少一个 (t,ϕ(m))ϕ(m)(t,ϕ(m))diϕ(m)

( t , ϕ ( m ) ) ∣ ϕ ( m ) d i (t,\\phi(m))|\\frac {\\phi(m)}{d_i} (t,ϕ(m))diϕ(m),则 a ϕ ( m ) d i ≡ a ( t , ϕ ( m ) ) ≡ 1 ( m o d   m ) a^{\\frac {\\phi(m)}{d_i}}\\equiv a^{(t,\\phi(m))}\\equiv1(mod~m) adiϕ(m)a(t,ϕ(m))1(mod m)

∴ \\therefore 假设不成立,原命题成立

原根的个数

如果一个数 m m m有原根 g g g,则它的原根个数为 ϕ ( ϕ ( m ) ) \\phi(\\phi(m)) ϕ(ϕ(m))

证明:

如果 m m m存在原根 g g g,则
δ m ( g k ) = δ m ( g ) ( δ m ( g ) , k ) ( 阶 的 性 质 ) i f   ( k , δ m ( g ) ) = 1 且 1 < k < ϕ ( m ) 的 k 有 ϕ ( ϕ ( m ) ) 个 。 ∴ 原 根 有 ϕ ( ϕ ( m ) ) 个 。 \\delta_m(g^k)=\\frac {\\delta_m(g)}{(\\delta_m(g), k)}(阶的性质)\\\\ if~(k,\\delta_m(g))=1且1<k<\\phi(m)的k有\\phi(\\phi(m))个。\\\\ \\therefore 原根有\\phi(\\phi(m))个。 δm(gk)=(δm(g),k)δm(g)()if (k,δm(g))=11<k<ϕ(m)kϕ(ϕ(m))ϕ(ϕ(m))
在模 m m m的情况下,原根一定是 ϕ ( ϕ ( m ) ) \\phi(\\phi(m)) ϕ(ϕ(m))

原根的存在定理

一个数m存在原根当且仅当 m = 2 , 4 , p α , 2 p α m=2,4,p^{\\alpha},2p^{\\alpha} m=24pα2pα,其中 p p p为奇素数。 α ∈ N ∗ \\alpha\\in\\mathbb{N^*} αN

证明:待补。

题目:

P6091 【模板】原根

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N = 1e6+10;
const int inf = 1e9+7;
ll phi[N], tot, p[N];
bool st[N];
bool check(int n) {//判断是否存在原根
    if(n == 2 || n == 4以上是关于原根(模板+证明)的主要内容,如果未能解决你的问题,请参考以下文章

NTT小结及原根求法

hdu 4992 Primitive Roots 求原根模板

poj1284-Primitive Roots欧拉函数-奇素数的原根个数

poj1284Primitive Roots 欧拉函数

快速求原根的实现

各种友(e)善(xin)数论总集(未完待续),从入门到绝望