几何级数模数运算

时间:2017-02-03 20:51:34

标签: algorithm numbers

我正在以

的形式发表一系列文章
1+r+r^2+r^3+r^4+r^5

我必须找到一系列的模数,即我必须找到这个值

[(r^n-1)/(r-1)]%M

我可以轻松计算(r^n-1)%M的值,但问题是如何计算分母项? 因为如果(r-1) and M都不是co prime,则反向模数不能存在。

请帮助如何获得此值的任何近似值或算法?

由于求和非常大,我无法直接计算该值。

1 个答案:

答案 0 :(得分:2)

据推测,您建议使用快速取幂重现来计算r^n

E(r, 0) = 1
E(r, n) = E(r*r, n/2)         if n is even
          r * E(r*r, (n-1)/2) if n is odd.

我们可以为1 + r + r^2 + ... + r^n构建类似的直接重复。

F(r, 0) = 1
F(r, n) = (1 + r) * F(r*r, (n-1)/2)       if n is odd
          1 + (r + r*r) * F(r*r, (n-2)/2) if n is even.

当然,所有计算都应该由mod M完成。