Количество простых чисел на открытом слева отрезке (а, 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 они реализованы на современном уровне, с учетом совсем недавно доказанных теорем и новых методов.