Пользователь 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:

Понравилась статья?
Самые интересные новости из мира науки: свежие открытия, фотографии и невероятные факты у вас на почте.
Спасибо.
Мы отправили на ваш email письмо с подтверждением.