Есть два числа, их перемножили получилось: 15 809 340 839 561 О числах известно что они не единицы,целые и они не отрицательные. Есчо раз: х * у = 15 809 340 839 561 .....простое умножение, 2 класс церковно-приходской школы, даже думаю гуманитарии смогут решить. найдите х и у, и научите как решали
PHP: for($i = 10; $i <= PHP_INT_MAX; $i++) if(($res = 15809340839561 / $i) && is_int($res)) die("$res * $i = ".($res * $i));
очевидно что 3959491*3992771 просто не о чём не думаю, медитирую и ответ сам возникает у меня в голове, если не обладаешь таким даром, то можеш просто загуглить алгоритмы разложения на множители
да, но есть проблема а число 15809340839561 больше, надо ещё какую то библиотеку для работы с большими числами использовать, но не знаю может php и так с ними умеет работать из коробки
вики говорит что все алгоритмы разложения на множители вычислительно сложные, но там может какие то оптимизации есть, чтобы не все числа подряд перебирать, но может быть ещё вариант что дано какое то специальное определённое число, и его можно и на бумаге разложить, например какой то признак делимости есть, например сумма цифр делится на 3, или что то вроде того
Респектище! скрипт рабочий, только маленькое косметическое дополнение: наименьший из двух делителей не может быть больше чем [SQRT(15 809 340 839 561)], а [SQRT(15 809 340 839 561)] = 3 976 096, что значительно меньше PHP_INT_MAX = 2 147 483 647, что делает нижеприведенное замечание тролекса нелепым как объяснение путена, откуда у него 2 миллирада долларов в Панаме но это так, к слову, скрипт никогда не дойдёт до PHP_INT_MAX , а решит раньше. и есчо: PHP: for($i = 10;.... с 10, думаю, неправильно начинать ведь 10 делиться на 5, а значит и всё число тоже: х*у, если х = 5*2, значит 2*у делиться на 5 и ты бы его нашел раньше когда поделил на 5... значит можно на один лооп сократить: PHP: for($i = 11;.... но по уму ведь все чётные выподают таким же образом?, ВО! оптимизированно : PHP: for($i = 11; $i <= PHP_INT_MAX; $i+=2) if(($res = 15809340839561 / $i) && is_int($res)) die("$res * $i = ".($res * $i));
Напесал песдато, только было-б не хуёво вставить бы цытату, Кольки Гумилёва как ты ево разложил? ведь в условии: присутствует простой, русский союз и, который переверачивает весь твой ответ с умнейшего и интелегентнейшего до ответа упоротого гугломана скриптакиддиса! Как ты ево решил БЛДЖТ? Научи БЛДЖТ
чегооо??? я говорил что число 15809340839561 больше PHP_INT_MAX, а не его делитель, поэтому я сказал что не знаю будет ли это работать, если число не помещается в тип INT если число не является простым есть и другие признаки делимости, на 3, на 5, и прочие я и написал я же на этом сайте http://ru.numberempire.com/numberfactorizer.php получил ответ (если что этот метод решения не противоречит условиям задачи)
Число комплексное, указано в условии а если комплексное то наименьший делитель никогда, ни при каких условиях, не будет большем чем 3 976 096 Во-о-о молодца! Дык ты на сайте разложил? А-а-а понятно
Проверил на php 7.0.16-3, который включён в поставку кали 2017 - скрипт работает, при чём мгновенно выдаёт овет, а я ожидал что действительно будет долго брутить)). echo PHP_INT_MAX; выводит 9223372036854775807. Но это из-за того, что система 64-разрядная, в 32-разрядных видимо php_int_max, будет такая как писал trolex, и скрипт работать не будет. А вообще, для таких эксперементов подходит питон - он из коробки поддерживает длинную арифметику, работает хоть со сто-значными целыми числами, хоть с 500-значными, хоть с полэкрана-значными, я не знаю какое-там ограничение.
Константа была использована только для альтернативы числу 9999999999 Для точных вычислений в PHP существует GMP.
https://ru.wikipedia.org/wiki/Факторизация_целых_чисел https://www.google.ru/search?client=opera&q=алгоритмы+разложения+на+множители
Ну по тому посту я сразу понел что ты знатный гуглемэн. Но ничё скоро Роскомнадзор гугл поприкроет ты не будешь уже таким крутым.