unsigned int power(unsigned int a, unsigned int n)
{
unsigned int i, s;
if (!n) return 1;
if(!a) return 0;
i=n;s=a;
while (i>>=1)//每次移动递增
{
s*=s;
if ((i&n)==i) s*=a;//解决奇偶
}
return s;
}
以上算法也可说是:快速幂取模算法的一个优化。 unsigned long power(unsigned long m, unsigned long n)
{
unsigned long t = 1;
while(n > 0){
if(n & 0x01UL == 1)
t *= m;
m *= m;
n >>= 1;
}
return t;
}