May 16, 2022 16:22
Настало время поговорить о ещё одной метаморфозе математики - о простых числах. Уж не знаю, кто их так назвал, но в действительности они не такие уж и простые оказались для учёных. Я бы даже сказал, что они оказались сверхсложными. С ними связана куча сложностей - от их понимания до поиска и хранения. Что ж, давайте попробуем посмотреть на них с ещё одной позиции. Авось, нароете для себя что-то полезное... ;)
Итак, что же такое простые числа? Представьте себе, что числа образуют этакое числовое поле различных значений, воздействуя друг на друга и на себя же, образуя всякие циклы или прогрессии и т.п. Но заполняется оно постепенно. Вот у нас есть 1. Сколько её не умножай, никакого иного значения от неё не получишь. Идём далее по прогрессии единицы. 2. Её можно умножить на 1 (что бесполезно), и на саму себя. Собственно, других чисел у нас-то и нет больше. И получаем 4. У нас уже есть 1, 2 и 4. Можем добавить сюда и умножение 2 на 4, получив 8. И так далее. Но у нас нет тройки. В этом-то и дело - она вылазит только при обычном прямом счёте с шагом в единицу, которая её и порождает! Ну, вот мы её получили. Из неё можно уже получить и 6, и 9, и 12 (умножив на 4, разумеется). Но как ты её не перемножай, ты не получишь ни 5, ни 7, ни 11. Короче... Если мы примем заполнение условного числового поля за работу некоторой функции (а почему бы и нет), то простые числа оказываются просто исключениями из неё. Ну, вроде как отходы производства. Или ручная работа единицы (как посмотреть). Но если поле заполняется закономерно и предсказуемо, то и "отходы" тоже должны представлять из себя какую-то предсказуемую последовательность, которую мы можем наблюдать с большого расстояния на графиках, но всё никак не можем поймать за бороду. Хотя такая борода есть. Её я обнаружил, даже не ведая о том, что учёным она также известна. А потому имею о ней сугубо личное, несколько иное представление.
Речь идёт о том, что все простые числа принадлежат множеству 6n±1, где n - любое натуральное число. Но, как мне кажется, взгляд учёных всё время отвлекают так называемые числа-близнецы - пары простых чисел, расположенных через один (иные даже упорно утверждают, что простые числа 3 и 5 - тоже близнецы). В этом, на мой взгляд, их очевидная ошибка.
Давайте представим прямую, состоящую из чисел, кратных шести. Иными словами, прогрессия 6n. А вокруг неё, как яблоки на ветках, развешены простые числа. Одни больше на 1, чем 6n, другие - на 1 меньше. То по одному яблоку с какой-то одной из сторон, то сразу с обеих (те самые близнецы), то вообще есть места без яблок. Но лучше так: представьте себе два разных поезда, стоящих параллельно на соседних путях. И в каждом из них есть куча вагонов-ресторанов, которые иногда располагаются друг напротив друга. И принадлежат они министерству путей сообщения, и стоят на рельсах, и функции похожие выполняют. Но вы же их не называете вагонами-близнецами. Вот так и пары простых чисел: они представляют из себя эти самые вагоны-рестораны в двух параллельно стоящих поездах. То есть множество простых чисел это две независимые (предположительно) последовательности, одна из которых отвечает правилу 6n-1, другая - 6n+1.
Если мы оторвём наш взгляд от «ресторанов-близнецов», мы увидим эти два ряда. Более того, мы увидим и эффективный способ хранения информации о позиции и номерах нужных нам вагонов. Давайте проведём вдоль нашей воображаемой прогрессии эти две последовательности вот каким способом: над ней пусть будет ряд 6n-1, под ней - 6n+1, причём наличие простого числа на указанном месте обозначим как 1, а отсутствие - через 0. Хотите узнать, что получится? Ну, вот, например, первые несколько десятков позиций в прогрессии 6n, где левая верхняя единица - это число 5, а нижняя левая - 7 (и т.д. с шагом 6):
1111101111010110111001101001110110000111011110101001100001110001101001
1110111001111001110010101110010110101101000011100011001101001110010101
Мы получили два двоичных кода. Это - готовый рецепт для хранения данных последовательностей, в котором каждое число представлено ОДНИМ БИТОМ! Всё остальное - простейшая расчётная часть 6n-1 или 6n+1, которую любой компьютер одолеет за мгновения. Да, мы не можем таким образом хранить число, как отдельный объект. Но надо ли рассказывать вам, насколько меньше подобный вид записи займёт места по сравнению со всеми остальными способами хранения именно ряда чисел? Я думаю, программисты и математики оценят сей маленький подарок, если кто ещё не сдюжил додуматься - по крайней мере, я о таком способе информации не нашёл, хотя слегка похожие, на основании решета Эратосфена и действительно неплохо оптимизированные, видел. Но... Ну, а написать короткий код для поиска и составить базу данных не составит ни малейшего труда. Даже если ряд окажется слишком большим, его легко можно разбить на несколько частей для ускорения поиска. Более того, не смотря на то, что ряды не показывают себя, как цикличные (плотность простых чисел, в том числе и их пар уменьшается, а количество «нулевых» позиций растёт и с 20-й позиции ещё и принимает временами вид пар нулей), в данных рядах есть пересекающиеся цепочки. Например, в обоих кусках, представленных мной, есть одинаковая последовательность в 14 знаков! А есть и другие, поменьше. В общем, всё указывает на то, что эти ряды открыты для оптимизации и архивации, а также для дальнейших статистических исследований. И возможно, что они не так уж и независимы друг от друга, раз встречаются такие перекрестия из повторов. Уверен, что простота представления двух рядов простых чисел сыграет свою положительную роль, и закономерность их расположения мы таки найдём.
И кстати, единицу я считаю простым числом. Ведь у неё тоже два делителя. Просто они равны. А то, что у неё некоторые свойства не совпадают со свойствами других простых чисел, это не должно никого волновать. Пара «псевдоблизнецов» - 3 и 5 - никого ведь не напрягает, хотя к ряду 6n±1 тройка не имеет ни малейшего отношения. Учёные легко засунули эту пару в исключение, а вот единицу почему-то нет. Но посмотрите системно: если единицу принять за первое простое число и за первое из ряда Фибоначчи, о котором мы не раз говорили, то седьмое число у обоих рядов будет число 13. Прям как утверждение, что всё есть замысел Главного Архитектора - не только сама глобальная функция, но и исключение из неё.
Такие дела, друзья мои. Проверяйте, исследуйте, вгрызайтесь в науку. Пишите, если будут интересные соображения. И всем критического мышления, но позитивного настроя.
P.S.
Вот тут (otvet.mail.ru/question/204483906) человек задался вопросом, сколько всего простых чисел известно, на что получил ответ, что когда посчитали все простые числа до 10 в степени 18, получили 24 739 954 287 740 860 простых чисел, для хранения которых нужно где-то под сотню петабайт.
Записал в файл оба ряда от 6 до 100000. Каждый занял 16666 байт. Архиватор 7-zip сжал ещё в 7 раз. И это безо всякой оптимизации записи. А значит, там реально куча повторов, и почти наверняка есть определённые закономерности, которые видит архиватор. Предполагаю, что с увеличением объёма данных степень сжатия также будет расти, так как растёт количество нулевых позиций - уже на данном отрезке встречаются кортежи по 17-18 нулей.