Как умножить два очень больших количества, больше, чем 32 символа, например, умножение 100! с 122! или 22^122 с 11^200 справкой деления и завоевывают, какое-либо тело имеют код Java или код C#?
Вот некоторые алгоритмы умножения целых чисел
Вот библиотека классов для чисел
Она включает в себя алгоритмы Карацуба и Шонхаге-Страссена для умножения больших целых чисел.
Вам, вероятно, следует использовать 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 факториальная функция, если она вам нужна
.Я сам написал одну, которая использует Массивы для этого, просто ради забавы. Я думаю, что класс BigInteger Java делает то же самое.
Здесь - пример на C#, который может быть вам полезен.
.