Прислал мне Богдан в Телеграм пост:

81 — единственное число, не считая 0 и 1, которое обладает таким интересным свойством: (8 + 1)2 = 81.

Я заинтересовался этим и решил проверить. Быстренько набросал функцию на РНР:

    function print_x() {
        $result = [];
        $max = pow(10 - 1, 2);
        for ($x = 2; $x <= $max; $x++) {
            if (pow($x % 10 + floor($x / 10), 2) == $x) {
                $result[] = $x;
            }
        }
        echo join(', ', $result)."\n";
    }

И да, после запуска функция выдала только один ответ: 81. Но мне резануло глаза, что в коде встречается константа "10". Хороший стиль программирования требует заменить её на буквенное обозначение, что я и сделал: заменил её на букву N. И тут меня осенило: а почему N должна быть равна 10? Что будет, если N станет равна другому числу? В результате функция заимела такой вид:

    function print_x($n) {
        $result = [];
        $max = pow($n - 1, 2);
        for ($x = 2; $x < $max; $x++) {
            if (pow($x % $n + floor($x / $n), 2) == $x) {
                $result[] = $x;
            }
        }
        echo join(', ', $result)."\n";
    }

Математически эта задача звучит так: "Найти число Х, которое удовлетворяет условию: (X div N + X mod N)2 = X", где N — целая положительная константа, X div N — результат деления нацело, Х mod N — остаток от деления.

Если исследовать эту задачу математическими методами, то очевидно, что есть три решения, существующих при любом N. Эти решения логично назвать тривиальными: X = 0, X = 1, X = (N - 1)2. Карина нашла ещё одно тривиальное решение: X = N2. Это сподвигло меня модернизировать функцию:

    function print_x($n) {
        $result = [];
        $max = pow($n + 1, 2);
        for ($x = 2; $x < $max; $x++) {
            if (pow($x % $n + floor($x / $n), 2) == $x) {
                $result[] = $x;
            }
        }
        echo join(', ', $result)."\n";
    }

Так же открытие Карины сподвигло меня взять ручку и бумажку и строго доказать, что решений, бОльших чем Х = N2, быть не может.

Итак, подведём итоги: уравнение (X div N + X mod N)2 = X при любом N имеет четыре тривиальных условия: Х = 0, Х = 1, Х = (N - 1)2, X = N2.

Пост в телеграме говорит, что для N = 10 нетривиальных условий нет. А есть ли они для других N? Я сделал несколько пробных запусков программы и получил такие результаты:

Напрашивается гипотеза, что для чётных N нетривиальных решений нет.

А вот для нечётных чисел:

Ну а теперь я Вас добью:

Выводы

Это чёртово уравнение испортило все мои гипотезы относительно нетривиальных решений. Если вдруг кто узнаете больше, я буду рад услышать.