<分区>
我编写了一个方法来测试一个数是否为素数。为了最大化用户可以输入的数字范围,我想使用 double 。问题是,在一个非常大的质数上测试它之后,比如 40 位左右,我的方法返回 false(我已经用 int 版本测试了逻辑,据我所知它工作得很好)。 这是我的代码:
public static boolean isPrime(double number) {
double sqrt = Math.sqrt(number);
for(double i = 2; i<= sqrt; i++) {
if(number%i == 0) {
return false;
}
}
我知道它不能在非常高的数字下工作的原因是因为精度错误,但是否存在这个问题?