Иллюстрированный самоучитель по Mathematica 5

Простые числа, близкие к числам определенного вида

В ряде областей науки и техники, например в теории кодирования, важно знать простые числа, близкие к числам определенного вида (чаще всего к степеням таких оснований, как 2, 3 и 10). Вне сомнения, их можно было бы найти в обычных таблицах простых чисел. Однако таблицы нужного размера не могли бы поместиться даже в многотомных изданиях. Поэтому существуют специальные таблицы, в которых приводятся только простые числа, близкие, например, к 2n, 3n и 10n.

Но составить такие таблицы для достаточно больших n довольно трудно, и, несмотря на компактность, такие таблицы зачастую весьма неполны. С помощью системы Mathematica несложно составить такие таблицы самостоятельно. Допустим, таблица должна содержать десять наибольших простых чисел, предшествующих N, и десять простых чисел, следующих за N. Можно ограничиться случаем достаточно больших N, например N>1000, поскольку при меньших N вопрос решается с помощью таблиц простых чисел, помещаемых обычно в учебниках для пятиклассников.

Давайте попытаемся составить нужную нам программу, например, для степеней 10. Чтобы результаты выглядели наглядно, нужно предусмотреть их преобразование в таблицу с помощью текстового процессора, например, Word. Поэтому необходимо предусмотреть такой формат результатов, который было бы легко отформатировать (преобразовать в таблицу). Для этого можно предусмотреть двоеточие : в качества разделителя колонок и два двоеточия :: в качестве разделителя строк таблицы. Вот как может выглядеть программа.

Иллюстрированный самоучитель по Mathematica 5 › Арифметика: простые числа › Простые числа, близкие к числам определенного вида

В этой программе использованы функции PreviouskPrimes и NextkPrimes. Функция PreviouskPrimes [N, k] должна генерировать k наибольших простых чисел, меньших N. Иными словами, она должна генерировать k простых чисел, предшествующих N.

Функция NextkPrimes [N, k] должна генерировать k наименьших простых чисел, больших N. Иными словами, она должна генерировать k простых чисел, следующих за N. Вот и все. Нам осталось только написать код этих двух функций. Давайте начнем с функции PreviouskPrimes [N, k].

PreviouskPrimes[n_Integer ? (# > 100 & ), k_Integer ? Positive] := Block[{p = PreviousPrime[n], i = 1},
        While[i <= k, {Print[p, ","], p = PreviousPrime[p], ++i}]
]

Эта функция генерирует простые числа в порядке убывания, т.е. в порядке удаления от заданного числа, что удобно при выборе простого числа, наиболее близкого к заданному.

Не сложнее написать и функцию NextkPrimes [N, k]. Для этого нужно только заменить функцию PreviousPrime на NextPrime.

NextkPrimes[n_Integer ? (# > 100 & ), k_Integer ? Positive] := Block[{p = NextPrime[n], i = 1},
    While[i <= k, {Print[p, ","], p = NextPrime[p], ++i}]
]
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.