两个超大数之间如何取余数?在线等?
如果有两个超大数a和b,比double类型的范围还要大,怎么取他们的余数呢?有没有什么好的快的办法参考一下?
[解决办法]
可以考虑分解啊
把大的数据分解为不会溢出的数据
比如:超大数据,A、B
A Mod B->(A1*A2) Mod B->((A1 Mod B)*(A2 Mod B)) Mod B
如此分解下去,就能求出结果
[解决办法]
上面的说明中:A=A1*A2
依据这个思想,写一个函数即可
[解决办法]
你说的是不是CRC校验?
看看这个能不能帮到呢?
http://blog.sina.com.cn/s/blog_7efa20840100xqw3.html
[解决办法]
自己写 一个大数取余函数呗
[解决办法]
方法倒是有,就是当两个数据相差很大时非常的耗费时间
Option ExplicitPrivate Declare Function GetTickCount Lib "kernel32" () As LongPrivate Sub Command1_Click() Dim a As Variant Dim b As Variant Dim lngP As Long a = 1E+20 b = 112400000000# lngP = GetTickCount Do a = a - b Loop Until a < b lngP = GetTickCount - lngP Debug.Print a Debug.Print "共耗时:" & lngP & "ms"End Sub
[解决办法]
用 Decimal 类型,最大可到 +/- 79,228,162,514,264,337,593,543,950,335
Option ExplicitSub Main() Dim a As Variant Dim b As Variant Dim c As Variant Dim d As Variant a = CDec("12345678901234567890") b = CDec("7") c = Round(a / b, 0) d = a - b * c Debug.Print a & " = " & b & " * " & c & " + " & dEnd Sub
[解决办法]
哈哈,再大就该上大数运算了
[解决办法]