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

Количество простых чисел на открытом слева отрезке (а, b]

С помощью функции PrimePi несложно подсчитать и количество простых чисел на открытом слева отрезке (а, b]. Помните только, что если вы пользуетесь выражением k(b)-n(а), т.е. выражением PrimePi [b] – PrimePi [a], то в случае простоты простое число b будет посчитано, а простое число а – нет. Иными словами, подсчет осуществляется на открытом слева отрезке (а, b].

А что, если нужно посчитать простые числа на замкнутом с обоих концов отрезке [а, b}? Ничего сложного: в качестве аргумента можно взять не а, а несколько меньшее число, ведь аргументом функции PrimePi может быть любое вещественное положительное число. Давайте посчитаем, например, количество простых чисел в 1-й, 2-й,…, 20-й сотне миллионов натуральных чисел. Вот как это можно сделать.

delta = 100000000;
PrimePiAB[delta_Integer ? Positive, xk_Integer ? Positive] :=
    Block[{k = 0, x = delta, kt = 0},
        While[x <= xk, {
            kt = PrimePi[x];
            Print[x, ":", kt, ":", kt - k];
            k = kt;
            x = x + delta
        }]
]
PrimePiAB[delta, 10 delta]

Полученные результаты удобно представить в виде таблицы.

В приведенной выше программе мы воспользовались тем, что интервалы примыкают друг к другу. Однако так бывает не всегда. Иногда нужно подсчитать количество простых чисел в интервалах заданной длины, причем начала интервалов расположены на числовой оси так, что конец очередного интервала не совпадает с началом следующего. Подсчитаем, например, количество простых чисел в интервалах длиной 150000, причем пусть начинаются эти интервалы в точках х= 106, 107,…, 1014. Для этого случая пригодится следующая функция.

DeltaPi[x_, delta_] := Block[{xk = x + delta, k = PrimePi[xk]}, Print[x, "-", xk, ":", k - PrimePi[x]]]

С помощью этой функции нетрудно написать и нужную нам программу.

delta = 150000;
Do[DeltaPi[10 ^ n, delta], {n, 6.14}]

Результаты отформатированы в виде таблицы.

Резюме

Хотя каждый математик знает, ох, как это непросто, нужно признать, что система Mathematica дружит с простыми числами. В ней есть функции, проверяющие, является ли число простым; функция, генерирующая n-е простое число; функция, генерирующая следующее простое число; функция, генерирующая предыдущее простое число; а также знаменитая функция n(х), подсчитывающая количество простых чисел, не превосходящих заданного числа х. Конечно, реализовать все эти функции весьма непросто, и применяя их, нужно учитывать ограничения на их аргументы. Но как бы то ни было, в системе Mathematica они реализованы на современном уровне, с учетом совсем недавно доказанных теорем и новых методов.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.