快速冪算法


快速冪算法——可迅速求出a^b。其主要理論依據如下:

        1,當b為偶數時,a^b可以轉為a^2的b/2次方。

        2,當b為奇數時,a^b可以轉為a^2的b/2次方,再乘以a。

 

 1 int quick(int a,int b)
 2 {
 3     int s = 1;
 4     while (b > 0) {
 5         if (b % 2 == 1) {//b=b>>1保證了在最后一步肯定會執行該if判斷
 6             s = s * a;
 7         }
 8         a = a * a;
 9         b = b >> 1;
10     }
11     return s;
12 }

 

 

 

利用快速冪方法可以迅速求出一個數的任意次方。再結合a*b%m=(a%m)*(b%m)%m,就可得出下面計算代碼:

 

int mod_exp(int a, int b, int c)        //快速冪取余a^b%c
{
    int res, t;
    res = 1;
    t = a % c;
    while (b)
    {
        if (b & 1)
        {
            res = res * t % c;
        }
        t = t * t % c;
        b >>= 1;
    }
    return res;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM