BigInteger
поддерживает multiply()
, а не только add()
. Поскольку операция multiply()
является более дорогостоящей, ее скорость также имеет наибольшее значение для алгоритмов.
Умножение двух 64-битных целых чисел дает 128-битный результат. В Java нет 128-битного целочисленного типа, поэтому получение правильного результата - это не просто «выполнить операцию и сдвинуть несколько битов». Вам нужно будет разделить два числа на 4 32-битных части, умножить их, а затем составить результат. Или добавьте JVM intrinsi c, чтобы можно было использовать собственную 128-битную операцию. Дело не в том, что невозможно сделать, это скорее вопрос рентабельности.