-1

我正在制作一个没有 BigInteger、BigDecimal 等的涉及大数字的项目。我已经设法完成了所有基础知识,但现在我需要增加计算阶乘的能力。我的 BigNumber 将数据存储为 int[] 。

这是 BigInteger 的示例解决方案,但如果没有我的号码的实际值,我将无法使用它。

    BigInteger n = BigInteger.ONE;
    for (int i=1; i<=20; i++) {
        n = n.multiply(BigInteger.valueOf(i));
        System.out.println(i + "! = " + n);
    }

那么如何计算价值呢?将整数从最后一个到第一个相加,将 10 乘以 10,将 100 乘以 100 等等,然后将其存储多久?

BigInteger 的来源:http: //developer.classpath.org/doc/java/math/BigInteger-source.html

4

1 回答 1

0

那么如何计算价值呢?将整数从最后一个到第一个相加,将 10 乘以 10,将 100 乘以 100 等等,然后将其存储多久?

我不认为将其存储为 along是您想要的。如果值大于 会发生什么Long.MAX_VALUE

如果n是一个BigInteger,那么n.multiply(BigInteger.valueOf(i));应该返回一个BigInteger对象。该multiply方法应该知道如何与两个BigInteger对象进行乘法运算,而无需将它们转换为long. 一种方法是使用我们在小学学习的乘法进位算法遍历每个数字。如果您的值是天文数字,这将非常缓慢,但它确实具有易于理解和实施的好处。

于 2010-08-04T16:52:25.270 回答