Портрет Карла Гаусса нарисовали огромным гауссовым числом

Пользователь Reddit разработал сложный алгоритм, позволяющий создавать любой ASCII-рисунок с помощью одного-единственного гауссова числа. Он использовал программу, чтобы нарисовать портрет самого великого математика.
Портрет Карла Гаусса нарисовали огромным гауссовым числом

Карл Фридрих Гаусс — легендарный математик XVIII века, который прославился в том числе своими трудами, посвященными простым числам. Он был первым, кто обнаружил и вывел систему образования гауссовых простых чисел — то есть таких, которые нельзя записать в виде суммы двух идеальных квадратов. К примеру, 13 = 4 + 9, а 89 = 25 + 64. 4 и 9 — это квадраты чисел 2 и 3. В свою очередь, 25 и 64 — квадраты чисел 5 и 8. Таким образом, легко сказать, какие числа не являются гауссовыми. Но как в таком случае вычислить гауссовы числа?

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Можно пользоваться примитивным разбором числа на составляющие. 23 — это гауссово простое число, потому что состоит из 1, 4, 9 и 16. Но такой подход работает лишь потому, что 23 — само по себе очень маленькое значение. Масштабирование этого алгоритма для проверки всех сумм более крупных чисел превратилось бы в очень громоздкий и утомительный процесс.

Однако, несмотря на это обстоятельство, одному программисту на Reddit под ником Gedanke удалось составить сложное изображение, используя только гауссовы числа. Суть в том, что первые несколько шагов этой работы напоминали создание ASCII, иначе говоря рисунка из текстовых символов. В качестве шаблона программист взял портрет самого Карла Гаусса и масштабировал его до нескольких тысяч пикселей. В дальнейшем каждый пиксель станет отдельным текстовым символом.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Затем каждому пикселю был условно присвоено один из пяти оттенков серого, использованных при создании оригинального изображения. Затем Gedanke визуально оценил то, какие символы (от 1 до 9) лучше подходят каждому из этих оттенков. Отсеяв лишние, он получил цифры 1, 3, 7, 8 и 9.

Теперь дело оставалось за малым: нужно было найти гауссово простое число, включающее в себя эти цифры. Поиск простых чисел хорошо изучен, и в данном случае Gedanke использовал метод, называемый тестом Baillie-PSW. Но даже с учетом этого изображение вышло несовершенным. Если присмотреться, то в правом нижнем углу картины можно увидеть, что последние восемь цифр не являются «запланированными» и выделяются на фоне общей структуры.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Забавная деталь, которая отличает эту работу от аналогов — это соблюдение условия Гаусса. Когда вы делите целое число на 4, существует четыре возможных остатка: 0, 1, 2 или 3. Но если разделить на 4 идеальное квадратное число, вариантов всего два. Это потому, что все четные квадраты кратны 4, а нечетные всегда отличаются от четных на единицу. В английском языке это правило выражается как «1 mod 4».
Таким образом, если два идеальных квадрата будут складываться в простое число, то один обязательно должен быть четным, а другой — нечетным. Поэтому их сумма, как и любое другое гауссово простое число, и будет выражаться через 1 mod 4. Поэтому программисту просто оставалось ограничить проверку чисел формулой 3 mod 4, то есть теми, которые на 3 больше кратных четырем.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Самое интересное в том, что весь этот сложный процесс был перенесен на Python и выложен в открытый доступ на Github, так что теперь любой желающий может воспользоваться им в своих целях. Так, наши зарубежные коллеги сгенерировали 5500-значное число, которое складывается в логотип Popular Mechanics: