计算逆Mod,其中Mod不是素数

时间:2014-11-09 09:13:51

标签: algorithm modulus chinese-remainder-theorem

我想计算

的值

F(N)=(F(N-1)* [((N-R + 1)^(N-R + 1))/(R ^ R)])mod M对于给定的N值, R和M.

这里A ^ B显示A功率B而不是任何按位运算

这里M不需要是素数。如何处理这个问题?请帮助,因为如果M是素数,那么就不会很难找到R ^ R mod M的逆。

但由于M可以是1到10 ^ 9之间的任何值。我无法解决这个问题。

N可以在1和10 ^ 5之间,R小于或等于N.

1 个答案:

答案 0 :(得分:1)

假设你知道分裂的结果是一个整数:

由于N和R很小,你可以通过计算N-R + 1和R的素因子化来做到这一点。

如果我们知道R=p^a...q^b,那么R^R = p^(Ra)...q^(Rb)

同样,你可以计算出(N-R+1)^(N-R+1)中每个素数的力量。

R^R中的素数幂中减去(N-R+1)^(N-R+1)中素数的幂数,得出结果中每个素数的幂。

然后,您可以使用标准二进制取幂例程来计算结果模M,而不需要反转。