我开始玩弄项目euler。
我已经完成了问题#3,但我只能通过将我的endNumber设置为71 * 486847(手动计算)来完成它。尝试设置endNumber = 600851475143时,我收到溢出错误。
我甚至将endNumber设置为Long,甚至Double,我认为应该有足够的数字来计算。
我不能在这里发布整个代码,所以我会发布一半,希望有人可以告诉我如何编辑它以处理更大的数字。
另外我注意到当我的代码有一个如下所示的非常大的数字时会弹出“#”。
endNumber = 600851475143#
countFactor = 0
For i = 2 To endNumber
If endNumber Mod i = 0 Then
溢出不是由于将数字600851475143
分配给Double
变量,因为Mod
函数似乎不能很好地处理比Long
更长的数字(事实上看似根本没有)。
另一种方法是使用Mod
的手动计算:
endNumber = 600851475143#
countFactor = 0
For i = 2 To endNumber
If endNumber - (Int(endNumber / i) * i) = 0 Then
如果你打算定期使用Mod
大数字,那么Chip Pearson's function将是一个有用的(这是我首先了解这个主题的地方)。它是在Excel
发布的一个问题,但在Access
完美运作。
长期合作的最高数量是:2.147.483.647
Double用于十进制目的,因此不是您想要的。
弹出的#是因为要在该单元格内显示的数字很大。
另外我不知道你想用这个循环做什么。但是那个需要很长时间才能运行。
在这个链接上你可以找到关于处理大数字:Large Number Arithmetic
希望有所帮助