2013-01-19 128 views
1

我正在研究欧拉项目的第三个练习的解决方案,并且我需要循环使用低于sqrt(600851475143.0)的奇数。但是每次循环迭代时我都不能从数字中减去2,它每次都保持不变。根据this answer,这是由于如何存储数字,并且上面的所有内容以及小数点以下的所有内容都丢失了。我该如何解决这个问题?我需要十进制数,所以我不能使用一个int(反正它不够大)。大数倒计时

+4

你能详细说明为什么你不能使用整数类型吗?奇数是由整数定义的。 – NPE

+0

@NPE设计不好。但我认为这不仅是我的问题,我认为还会有其他人需要使用十进制数的精确数字。 – 11684

+0

你当然可以使用'long'或'long long',并且float/double不能比int/long更多的“decimal”*。至于其他问题,bigint库会有所帮助,但你不会需要任意精度*非整数*至少有问题1-100 :) –

回答

2

既然你正在寻找奇数,奇数是按照定义的整数,只需要使用适当的整数类型而不是浮点数学。

+0

我最终做了什么... – 11684