如何找到余数?

时间:2014-10-11 13:15:18

标签: java c algorithm math numbers

我想找到一个非常长的数字的余数。我正在为此编写一个程序,因为我不能直接找到余数,因为它们是大数(在c中)。我怎么能这样做?我必须将更大的数字除以找到余数的数量的限制是500.ie 1到500 我想把这个数字分开:

  

1234567 = 1 * 10 ^ 6 + 2 * 10 ^ 5 + ...

     

1234567%×= 1modx * 10 ^ 6modx + 2modx * 10 ^ 5modx ...

我需要比这更好的方法。

2 个答案:

答案 0 :(得分:1)

提示: 使用链接列表。将数字动态存储为一组数字。 例如:

112233445566778899001122 => 11223344 55667788 99001122

现在考虑单个单位并从左到右开始。找到提醒并操纵它以添加到下一组并继续。

现在实施非常简单:)

编辑:

 112233445566778899001122/6 =>  11223344 55667788 99001122/6


 11223344/6 =>2

 2*100000000 + 55667788 = 255667788
 255667788/6 => 0
 0*100000000 + 99001122 = 99001122
 99001122/6=>0

 So the reminder is 0.

请记住,操作后的单个单元应该在 int 可以支持的最大范围内。

答案 1 :(得分:0)

如果您的问题涉及使用非常长或大的数字,请尝试使用long long。问题可能是您使用的数据类型太小而无法容纳您需要的值。

您可以尝试使用像GMP这样的bignum库,或者使用另一种丑陋的方式来比较使用数组或列表,有点类似于this

除此之外,模运算%将为您计算余数。