0
我正在做项目欧拉的一些问题,我偶然发现了一个问题。 我不知道为什么这个算法不适用于2^1000。它适用于10^1和10^8范围内的数字(这些是我测试过的),但它应该适用于所有可能的范围。顺便提一下,2^1000为1.07 * 10^301。双数的上限或多或少在10^308,所以这个数字仍然在范围内。总和的数字问题
import java.lang.Math;
public class Euler15 {
public static void main(String[] args) {
int count = 0;
double res = Math.pow(2,1000);
for(int i = 301; i >= 0; i--){
if (res == 0){
break;
}
while (res >= Math.pow(10, i)){
res-= Math.pow(10, i);
System.out.println(res);
count++;
}
}
System.out.println(count);
}
}
因为2^1000是方式大! – Ranveer
可能是一个舍入问题。 – wvdz
仅仅因为它在'double'的范围内,并不意味着你将所有的数字都提高到单位。 – 2013-11-23 21:55:55