使用Mod时避免大量溢出

我开始与项目euler玩弄。

我已经完成了问题#3,但是我只能通过将我的endNumber设置为71 * 486847(手动计算)来完成它。 当试图设置endNumber = 600851475143我收到溢出错误。

我甚至将endNumber设置为Long,甚至Double,我认为应该是大量的数字来计算。

我不能在这里发布整个代码,所以我会后半部分,希望有人能告诉我如何编辑它,以处理更大的数字。

另外我注意到,当我的代码有一个非常大的数字,如下所示“#”popup。

endNumber = 600851475143# countFactor = 0 For i = 2 To endNumber If endNumber Mod i = 0 Then 

溢出并不是因为将数字600851475143分配给Doublevariables,而是Mod函数似乎不能处理比Long更长的数字(实际上看起来根本不是)。

替代scheme可以使用Mod的手动计算:

 endNumber = 600851475143# countFactor = 0 For i = 2 To endNumber If endNumber - (Int(endNumber / i) * i) = 0 Then 

如果你打算定期使用Mod来处理大量的数据,那么Chip Pearson的function将是一个有用的function (首先我就是从这个主题中了解到的)。 它是在Excel发布的问题,但在Access完美工作。

最长可能的数字是: 2.147.483.647
Double是用于十进制的目的,所以这不是你正在寻找的。

popup的#是因为一个数字要显示在该单元格内。

另外我不知道你想用这个循环做什么。 但是那个将要花很长时间才能运行。

在这个链接,你可以find关于处理大数字: 大数字算术

希望有所帮助