标签:结合 一个 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