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

Поиск отрезков натурального ряда, состоящих только из составных чисел

Данная функция определяет наибольшую разность между двумя последовательными простыми числами, не превосходящими п. Заметьте, что для определения количества простых чисел, не превосходящих n, здесь используется функция PrimePi [n], которая в теории чисел обозначается как п(х). Но имя функции PrimePi вполне оправдано, поскольку имя Pi зарезервировано для константы тс. Функция LargestPrimeGap не является, конечно, обратной в строгом смысле ни к функции CompositeRuns, ни к функции CompositeRunsStart, ни к написанной нами программе. Однако она делает нечто, что помогает "обратить" полученную нами таблицу. Давайте определим, например, длину наибольшего интервала из составных чисел, не превосходящих 11. Сначала вычислим наибольшую разность между двумя последовательными простыми числами, не превосходящими 11.

LargestPrimeGap[11
4

Длина же интервала, естественно, на единицу меньше. И действительно, мы имели пару (3, 8}, что указывало, что первым числом в интервале длины 3 является 8. (Ну а 8+3 = 11.) Давайте теперь применим функцию LargestPrimeGap к нахождению наибольших разностей между двумя последовательными простыми числами, не превосходящими степеней некоторых чисел. В качестве оснований возьмем 2, е, 3, 5, 7, 10. Сначала попробуем провести вычисления, скажем, до 28 степени.

Do[Print[{n, LargestPrimeGap[2 ^ n]}], {n, 2.28}]

При выполнении этой программы получаются следующие результаты.

{3.2}
{4.4}
{5.6}
(6.6}
{7.14}
{8.14}
{9.14}
{10.20}
{11.34}
{12.34}
{13.34}
{14.44}
{15.72}
{16.72}
{17.72}
{18.86}
{19.114}
{20.114}
{21.148}
{22.148}
{23.154}
{24.154}
{25.210}
{26.220}
{27.222}
{28.248}

Отсюда видно, что основание 2 еще слишком мало, чтобы длина интервала изменялась существенно. Однако при вычислении последних значений на слабом компьютере ощущается заметное падение быстродействия. С чем это связано? Давайте перейдем к более естественному основанию – основанию натуральных логарифмов – и проверим, закономерно ли это.

Вот нужная нам программа.

Do[Print[{n, LargestPrimeGap[IntegerPart[E ^ n]]}], {n, 2.19}]

Вот что получилось.

{2.2}
{3.4}
{4.6}
{5.14}
{6.14}
{7.20}
{8.34}
{9.34}
{10.52}
{11.72}
{12.86}
{13.112}
{14.114}
{15.148}
{16.154}
{17.210}
{18.220}
{19.222}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.