6

如何将两个大于 32 个字符的非常大的数字相乘,例如 100 的乘法!有122!或 22^122 和 11^200 在分而治之的帮助下,有没有人有 java 代码或 C# 代码?

4

4 回答 4

3

您可能应该使用java.math.BigInteger。这允许整数值的表示远远超过 2^32 甚至 2^64。BigInteger 值基本上仅受程序可用内存量的限制,即 32 位系统上约 4 GB 和 64 位系统上几乎可用的物理+虚拟内存。

import java.math.BigInteger;

class Foo
{
    public static void main(String args[])
    {
        BigInteger bigInteger100Fact = bigFactorial(BigInteger("100")); //where bigFactorial is a user-defined function to calculate a factorial
        BigInteger bigIntegerBar = new BigInteger("12390347425734985347537986930458903458");

        BigInteger product = bigIntegerFact.multiply(bigIntegerBar);
    }
}

编辑:如果您需要,这是一个BigInteger 阶乘函数

于 2010-01-03T23:05:32.150 回答
2

这是使用 Karatsuba 和 Toom-Cook 的 java.lang.BigInteger的修补版本:

这是一个可以使用 Schönhage-Strassen 将 BigInteger 相乘的 Java 类:

于 2011-11-06T00:48:33.587 回答
1

这是一些整数乘法算法

这是一个数字类库

它包括用于将大整数相乘的 Karatsuba 和 Schonhage-Strassen 算法。

于 2010-01-03T22:53:57.617 回答
0

我自己写了一个,它使用数组来实现这一点,只是为了好玩。我相信 Java 的 BigInteger 类会做同样的事情。

是 C# 中的一个示例,可能对您有用。

于 2010-01-03T22:53:47.883 回答