码迷,mamicode.com
首页 > 编程语言 > 详细

快速幂算法

时间:2018-04-14 16:24:53      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:结合   一个   if判断   while   理论   bsp   div   class   ==   

快速幂算法——可迅速求出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,就可得出下面计算代码:

 

 1 int quick(int a,int b,int m)
 2 {
 3     int s=1;
 4     while(b>0)
 5     {
 6         if(b%2==1)
 7         {
 8             s=s%m;
 9             a=a%m;
10             s=s*a;
11         }
12         a=a*a%m;
13         b=b>>1;
14     }
15     return s;
16 }

 

快速幂算法

标签:结合   一个   if判断   while   理论   bsp   div   class   ==   

原文地址:https://www.cnblogs.com/Fy1999/p/8832168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!