Я создал проект intelliJ на Java 11. Я запустил следующий код:
Код: Выделить всё
long bigSquaredPrime = 100151 * 100151;
System.out.println(bigSquaredPrime % 50207);
System.out.println(bigSquaredPrime % 28687);
Несмотря на то, что 100151 — простое число, и, следовательно, bigSquaredPrime должен иметь его в качестве единственного множителя, кроме 1 и самого себя, обе эти строки возвращают 0. (28 687 и 50 207 оба являются простыми. Я выбрал эти конкретные числа, потому что метод, который я написал для поиска простых множителей, возвращал их как простые множители 100151 в квадрате.)
Почему это происходит? Если при работе с большими числами нельзя доверять модулю, как лучше всего искать делимость при проверке простых множителей?