1. 程式人生 > 其它 >尤拉降冪

尤拉降冪

技術標籤:數論

為了求解這個式子a^bmodc,我們可以怎麼做?
暴力pow?快速冪?
很顯然,當b大到一定程度時,利用pow或者快速冪這樣的演算法是無法在給定時間內求解的,這時我們引入尤拉降冪演算法,這個演算法的特點就是降低冪方的值而不影響最終結果,使我們解決問題的時間縮短。
結論:
先給出尤拉降冪的公式:
在這裡插入圖片描述
在這裡插入圖片描述

尤拉函式

ll euler_phi(ll n)
{
    ll k = (ll)sqrt(n + 0.5);
    ll ans = n;
    for(int i = 2; i <= k; i++)
    {
        if(n % i == 0)
        {
ans = ans / i * (i - 1); while(n % i == 0) n /= i; } } if(n > 1) ans = ans / n * (n - 1); return ans; }