Быстрое умножение очень больших целых чисел

Как умножить два очень больших количества, больше, чем 32 символа, например, умножение 100! с 122! или 22^122 с 11^200 справкой деления и завоевывают, какое-либо тело имеют код Java или код C#?

6
задан Jeffrey Aylesworth 3 January 2010 в 22:50
поделиться

3 ответа

Вот некоторые алгоритмы умножения целых чисел

Вот библиотека классов для чисел

Она включает в себя алгоритмы Карацуба и Шонхаге-Страссена для умножения больших целых чисел.

1
ответ дан 17 December 2019 в 02:29
поделиться

Вам, вероятно, следует использовать java.math.BigInteger. Это позволяет представлять целочисленные значения, значительно превышающие 2^32 или даже 2^64. Значения BigInteger по существу ограничены только объемом доступной программе памяти, т.е. ~4 Гб на 32-битной системе и практически всей доступной физической+вирутальной памяти для 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);
    }
}

EDIT: Вот BigInteger факториальная функция, если она вам нужна

.
3
ответ дан 17 December 2019 в 02:29
поделиться

Я сам написал одну, которая использует Массивы для этого, просто ради забавы. Я думаю, что класс BigInteger Java делает то же самое.

Здесь - пример на C#, который может быть вам полезен.

.
0
ответ дан 17 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: