Мне нужно рассчитать простую факторизацию больших чисел, под большими числами я подразумеваю диапазон 10 ^ 100.
Я получаю ввод a[0] ‹= 10^5 (простые множители которого я уже вычислил с помощью сита и других оптимизаций). После этого я получаю ряд входных данных a[1], a[2], a[3] в диапазоне 2 ‹= a[i] ‹= 10^5. Мне нужно рассчитать продукт и получить коэффициенты нового продукта. У меня есть следующая математика
Пусть X будет данными в памяти, и X может быть представлен как:
X = (p[0]^c1)(p[1]^c2)(p[2]^c[3]) .... где p[i] — его простые множители. Поэтому я сохраняю это как,
A[p[0]] = c1, A[p[1]] = c2.... поскольку p[i] ‹= 100000, это работает очень хорошо.
и по мере поступления нового числа я просто добавляю мощность простых чисел нового числа в A.
Так что это работает очень хорошо, а также достаточно быстро. Сейчас думаю оптимизировать пространство и компенсировать это снижением эффективности времени.
Итак, если я могу представить любое число P как x ^ a + b, где x - простое число. Могу ли я его факторизовать? P явно не помещается в память, но 2 ‹= x, a, b ‹= 100000? Или есть ли другой возможный метод, который сэкономит мне пространство A? Я согласен с более медленным алгоритмом, чем приведенный выше.