是否有更快的算法来计算(n!modulo m).
比每个乘法步骤的减少更快.
并且
是否有更快的算法来计算(a ^ p modulo m)比右 – 左二进制方法更好.
这是我的代码:
N! mod m
ans=1
for(int i=1;i<=n;i++)
ans=(ans*i)%m;
a ^ p mod m
result=1;
while(p>0){
if(p%2!=0)
result=(result*a)%m;
p=(p>>1);
a=(a*a)%m;
}
最佳答案 现在a ^ n mod m是O(logn),它是
Modular Exponentiation算法.
现在换另一个,n! mod m,你提出的算法显然是O(n),所以显然第一种算法更快.