
有了这个公式,求解问题就简单了,n的p次方很容易拆分为几个数相乘的形式。其中采用二分法拆分较为简单高效。

递归:
#define M 10003
int PowMod(int n, int p)
{
if (p == 1)
{
return n % M;
}
int temp = Pow(n, p/2);
int result = (temp*temp) % M;
if (p % 2 == 1)
{
result = (result*n) % M;
}
return result;
}
非递归:
#define M 10003
int PowMod(int n, int p)
{
int result = 1;
while (p > 0)
{
if (p % 2 == 1)
{
result = (result*n) % M;
}
p /= 2;
n = (n*n) % M;
}
return result;
}
本文介绍了一种高效的计算n的p次方后再对M取模的方法。提供了递归与非递归两种实现方式,适用于大数据处理及加密算法等领域。
4307

被折叠的 条评论
为什么被折叠?



