欧拉降幂证明(详解)

转自:点击这里

欧拉降幂公式

\quad \quad A K A K % ϕ ( m ) + ϕ ( m ) ( m o d m ) A^K≡A^{K\%ϕ(m)+ϕ(m)}( mod m) \quad \quad K > ϕ ( m ) K>ϕ(m)

证明

\quad \quad A K A K % ϕ ( m ) + ϕ ( m ) ( m o d m ) A^K≡A^{K\%ϕ(m)+ϕ(m)}( mod m) \quad \quad K > ϕ ( m ) K>ϕ(m) ( 1 ) \quad(1)

  1. ( A , m ) = 1 (A,m)=1 ,根据欧拉定理 A ϕ ( m ) 1 ( m o d m ) A^{ϕ(m)}≡1(mod m) ,易证
  2. ( A , m ) 1 (A,m)≠1 ,证明如下:

K = a ϕ ( m ) + c a 1 , 0 c < ϕ ( m ) K=a∗ϕ(m)+c \quad a≥1,0≤c<ϕ(m)

那么欧拉降幂公式就是

\quad \quad \quad A K A a ϕ ( m ) + c A ϕ ( m ) + c ( m o d m ) ( 2 ) A^K≡A^{a∗ϕ(m)+c}≡A^{ϕ(m)+c}( mod m)\quad(2)

\quad \quad \quad A a ϕ ( m ) A ϕ ( m ) ( m o d m ) A^{a∗ϕ(m)}≡A^{ϕ(m)}(mod m)

\quad \quad \quad A 2 ϕ ( m ) A ϕ ( m ) ( m o d m ) A^{2∗ϕ(m)}≡A^{ϕ(m)}(mod m)

移项

\quad \quad \quad A ϕ ( m ) ( A ϕ ( m ) 1 ) 0 ( m o d m ) A^{ϕ(m)}(A^{ϕ(m)}−1)≡0(mod m)

\quad \quad \quad m A ϕ ( m ) ( A ϕ ( m ) 1 ) ( 3 ) m|A^{ϕ(m)}(A^{ϕ(m)}−1)\qquad\qquad\qquad\qquad(3)

\quad \quad \quad ( m ( m , A ϕ ( m ) , A ) = 1 ( 4 ) (\frac{m}{(m,A^{ϕ(m)}},A) = 1\qquad\qquad\qquad\qquad(4)

根据欧拉定理

A ϕ ( m ) A k ϕ ( m ( m , A ϕ ( m ) ) ( A ϕ ( m ( m , A ϕ ( m ) ) ) k 1 ( m o d ( m ( m , A ϕ ( m ) ) ) Aϕ(m)≡A^{k*ϕ(\frac{m}{(m,A^{ϕ(m)}})}≡(A^{ϕ(\frac{m}{(m,A^{ϕ(m)}})})^k≡1(mod(\frac{m}{(m,A^{ϕ(m)}}))

其中 k 1 k≥1

移项即得 m ( m , A ϕ ( m ) ) ( A ϕ ( m ) 1 ) \frac{m}{(m,A^{ϕ(m)})}|(A^{ϕ(m)}−1)

同时乘 ( m , A ϕ ( m ) ) (m,A^{ϕ(m)})

m ( m , A ϕ ( m ) ) ( A ϕ ( m ) 1 ) m|(m,A^{ϕ(m)})∗(A^{ϕ(m)}−1)

m A ϕ ( m ) ( A ϕ ( m ) 1 ) m|A^{ϕ(m)}(A^{ϕ(m)}−1) (式3)

进行素因子分解

\quad \quad A = p 1 a 1 p 2 a 2 . . . . p t 1 a t 1 q 1 b 1 q 2 b 2 . . . q t 2 b t 2 A=p_{1}^{a_{1}} * p_{2}^{a_{2}}∗....∗p_{t_{1}}^{a_{t_{1}}}∗q_{1}^{b_{1}}∗q_{2}^{b_{2}}∗...∗q_{t_{2}}^{b_{t_{2}}}

\quad \quad m = p 1 c 1 p 2 c 2 . . . . p t 1 c t 1 q 1 d 1 q 2 d 2 . . . q t 2 d t 2 m=p_{1}^{c_{1}} * p_{2}^{c_{2}}∗....∗p_{t_{1}}^{c_{t_{1}}}∗q_{1}^{d_{1}}∗q_{2}^{d_{2}}∗...∗q_{t_{2}}^{d_{t_{2}}}

\quad \quad ( A , m ) = p 1 m i n ( a 1 , c 1 ) p 2 m i n ( a 2 , c 2 ) p t 1 m i n ( a t 1 , c t 1 ) (A,m)=p_{1}^{min(a_{1},c_{1})}*p_{2}^{min(a_{2},c_{2)}}*p_{t_{1}}^{min(a_{t_{1}},c_{t_{1}})}

( A ϕ ( m ) , m ) = p 1 m i n ( a 1 ϕ ( m ) , c 1 ) p 2 m i n ( a 2 ϕ ( m ) , c 2 ) p t 1 m i n ( a t 1 ϕ ( m ) , c t 1 ) (A^{ϕ(m)},m)=p_{1}^{min(a_{1}*ϕ(m),c_{1})}*p_{2}^{min(a_{2}*ϕ(m),c_{2)}}*p_{t_{1}}^{min(a_{t_{1}}*ϕ(m),c_{t_{1}})}

欧拉函数 ϕ ( m ) = p 1 c 1 1 p 2 c 2 1 . . . . p t 1 c t 1 1 ( p 1 1 ) ( p 2 1 ) . . . . ( p t 1 1 ) ϕ(m)=p_{1}^{c_{1}-1}*p_{2}^{c_{2}-1}∗....∗p_{t_{1}}^{c_{t_{1}}-1}(p_{1}-1)(p_{2}-1)∗....∗(p_{t_{1}}-1)

a i ϕ ( m ) a i p i c i 1 ( p i 1 ) p i c i 1 ( p i 1 ) p i c i 1 a_{i}∗ϕ(m)≥a_{i}*p_{i}^{c_{i}-1}*(p_{i}-1)≥p_{i}^{c_{i}-1}*(p_{i}-1)≥p_{i}^{c_{i}-1}

证明

\quad \quad \quad \quad \quad \quad p i c i 1 c i p_{i}^{c_{i}-1}≥c_{i} \quad \quad \quad \quad \quad \quad ( 6 ) (6)

c i = 1 c_{i}=1 ,成立

f ( x ) = l n ( x ) x 1 f(x)=\frac{ln(x)}{x−1} \quad \quad \quad \quad \quad [ 3 , ] [3,∞] 单调减

又有

\quad \quad \quad \quad \quad f ( 2 ) = l n 2 < 2 p i f(2)=ln2<2≤p_{i}

\quad \quad \quad \quad \quad f ( 3 ) = l n 3 2 < 2 p i f(3)=\frac{ln3}{2}<2≤p_{i}

于是 式子 6 6 成立

于是

( A ϕ ( m ) , m ) = p 1 m i n ( a 1 ϕ ( m ) , c 1 ) p 2 m i n ( a 2 ϕ ( m ) , c 2 ) p t 1 m i n ( a t 1 ϕ ( m ) , c t 1 ) (A^{ϕ(m)},m)=p_{1}^{min(a_{1}*ϕ(m),c_{1})}*p_{2}^{min(a_{2}*ϕ(m),c_{2)}}*p_{t_{1}}^{min(a_{t_{1}}*ϕ(m),c_{t_{1}})}

= p 1 c 1 p 2 c 2 . . . . p t 1 c t 1 =p_{1}^{c_{1}} * p_{2}^{c_{2}}∗....∗p_{t_{1}}^{c_{t_{1}}}

于是

\quad \quad \quad ( m ( m , A ϕ ( m ) , A ) = q 1 b 1 q 2 b 2 . . . q t 2 b t 2 (\frac{m}{(m,A^{ϕ(m)}},A) =q_{1}^{b_{1}}∗q_{2}^{b_{2}}∗...∗q_{t_{2}}^{b_{t_{2}}}

\quad \quad \quad ( m ( m , A ϕ ( m ) , A ) = 1 (\frac{m}{(m,A^{ϕ(m)}},A) = 1 \quad \quad \quad \quad \quad \quad 4 4 得证

\quad \quad m A ϕ ( m ) ( A ϕ ( m ) 1 ) m|A^{ϕ(m)}(A^{ϕ(m)}−1) \quad \quad \quad \quad \quad \quad 3 3 得证

\quad A K A a ϕ ( m ) + c A ϕ ( m ) + c ( m o d m ) A^K≡A^{a∗ϕ(m)+c}≡A^{ϕ(m)+c}( mod m)\quad \quad \quad \quad 2 2 得证

\quad \quad A K A K % ϕ ( m ) + ϕ ( m ) ( m o d m ) A^K≡A^{K\%ϕ(m)+ϕ(m)}( mod m) \quad \quad K > ϕ ( m ) K>ϕ(m) \quad 得证

C o d e : Code:

char b[1000010];
ll a, c;
ll quickpow(ll x, ll y, ll z)
{
    ll ans = 1;
    while (y)
    {
        if (y & 1)
            ans = ans * x % z;
        x = x * x % z;
        y >>= 1;
    }
    return ans;
}
ll phi(ll n)
{
    ll i, rea = n;
    for (i = 2; i * i <= n; i++)
    {
        if (n % i == 0)
        {
            rea = rea - rea / i;
            while (n % i == 0)
                n /= i;
        }
    }
    if (n > 1)
        rea = rea - rea / n;
    return rea;
}
int main()
{
    cin >> a >> b >> c;
    ll len = strlen(b);
    ll p = phi(c);
    ll ans = 0;
    for (ll i = 0; i < len; i++)
    {
        ans = (ans * 10 + b[i] - '0') % p;
    }
    ans += p;
    cout << quickpow(a, ans, c) << endl;
    return 0;
}
发布了631 篇原创文章 · 获赞 399 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_43627087/article/details/104172331