因此,我正在研究Euler项目的底部。那里有很多很大的问题(大多数问题都超出了我的水平)。但是我很快遇到了一个主要问题:

Java不会做很多事情。

现在,如果我有能力制作采用其他途径的快速程序,那么这对我来说就不是问题。不幸的是,我不是那个人。

以问题20为例。它要求找到数字总和100!我什至没有写数字解析,但是我找到阶乘的代码失败了。

long onehfact = 1;
for(int i = 1; i <= 100; i++){
    onehfact = onehfact * i;
    System.out.println(onehfact);
}


这适用于大约20个序列,但开始提供19位随机数字。按75个序列,它只是给我零。

100!绝对不为零。

我需要一种拥有数量惊人的数字的方法,而科学计数法对我的目的是行不通的。我是否可以使用大的变量类型,可以容纳100-150位数字?还有其他解决方案会产生相同的结果吗?

最佳答案

您可以使用BigInteger满足您的要求。

BigInteger onehfact = BigInteger.valueOf(1L);
for(long i = 1; i <= 100; i++){
    onehfact = onehfact.multiply(i);
    System.out.println(onehfact);
}

09-30 17:49