模数n的快速乘法

时间:2012-06-10 16:35:44

标签: java algorithm

  

可能重复:
  Need help in mod 1000000007 questions

我有一组数字,我想计算总产品模数为1000007.例如,如果我的数组包含1000个数字,那么我需要计算以下内容。

int product = 1;
for(int i=0;i<Array_Max;i++)
  product = product * Array[i]

然后产品模数为1000007 =?

有没有算法来优化上面的伪代码?现在我因为溢出而无法存储产品。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:3)

对产品使用long - 这足以保存乘以两个整数的结果。

您还需要计算每次迭代的模数,以避免溢出(从数学角度来看这是安全的,因为它不会在结尾处改变结果模数1000007。)

如果您愿意,也可以使用BigInteger,但速度要慢得多。