我开始玩弄项目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
答案 0 :(得分:1)
溢出不是由于将数字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
中效果很好。
答案 1 :(得分:0)
长期使用的最高数字是:2.147.483.647
Double用于十进制目的,因此不是您想要的。
弹出的#是因为在该单元格内显示的数字很大。
此外,我不知道你想用这个循环做什么。但是那个需要很长时间才能运行。
在此链接上,您可以找到有关处理大数字的信息:Large Number Arithmetic
希望有所帮助