В настоящее время я делаю свой собственный класс BigInt, разбивая числа на 7 цифр. (т. е. в базе 10 000 000)Как реализовать (быстрое) разделение bigint?
Я реализовал сложение, вычитание и умножение, и теперь я реализую деление и мод. Я написал код, который выполняет деление на длинное деление (оценка чисел путем деления наиболее значимых цифр), и он работает.
Однако, это слишком медленно. Когда я тестирую операции с 108-значным номером и 67-значным числом, для вычисления деления требуется 1,9 мс, намного медленнее других операций (0,007-0,008 мс для вычисления сложения/вычитания, 0,1 мс для вычисления умножения).
Как алгоритм Карацубы и БПФ для быстрого умножения, какой алгоритм существует для вычисления деления? Wikipedia демонстрирует некоторые алгоритмы деления (который вычисляет мультипликативный обратный делитель и умножает его на дивиденд), но я думаю, что это не помогает мне реализовать реализацию деления. Я также читал разделы «Большие целые методы», но это мне тоже не помогает ... :(
Хороший вопрос, но вы можете рассмотреть http://programmers.stackexchange.com вместо stackoverflow. –
Простой поиск в Google демонстрирует тоны статьи об этом, я не думаю, что это простая работа, но основная идея - это быстрое умножение, и все алгоритмы вокруг этого. например, вы можете взглянуть на [быстрое деление на большие целые числа] (http://www.treskal.com/kalle/exjobb/original-report.pdf) –
Есть ли шанс, что вы можете открыть источник? В настоящее время в JS нет хорошей библиотеки bigint. –