Я пишу алгоритм, который использует последовательное возведение в квадрат для решения k k mod m. Из-за того, как работает последовательное возведение квадратов, максимальное число, которое алгоритм когда-либо будет вычислять, равно 2147483646^2 (я ограничил ввод пользователя 214738364). К сожалению, это все же нужно вычислить. Кажется, что правая часть квадратов возводится, а затем превращает переполняющее число в float, но затем не может вычислить модуль float и целое число.PHP Overflow Modulus
Образец линии:
3422422^2 mod 715924 = 661224^2 mod 715924 = 437217178176 mod 715924 = -354280
Как я могу это исправить, и как один найти свой путь вокруг целочисленное переполнение в PHP?
Как вы можете исправить что? Этот модуль с плавающей запятой/интегралом недоступен? –
Ну, очевидно, что модулю не будет возвращать отрицательное число, но это то, что происходит здесь. Есть ли специальная функция PHP для модуля float и целого числа? –
[Что не так с модулем, возвращающим отрицательное число?] (Http://codepad.org/TwoMrkOR) Я не думаю, что с плавающей точкой это имеет какое-либо отношение; это просто переполненное целое число. –