Алгебра и пакет Mathematica 5

         

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



С помощью функции PrimePi несложно подсчитать и количество простых чисел на открытом слева отрезке (а, b]. Помните только, что если вы пользуетесь выражением k(b)-n(а), т.е. выражением PrimePi [b] -PrimePi [a], то в случае простоты простое число b будет посчитано, а простое число а — нет. Иными словами, подсчет осуществляется на открытом слева отрезке (а, b]. А что, если нужно посчитать простые числа на замкнутом с обоих концов отрезке [а, b}1 Ничего сложного: в качестве аргумента можно взять не а, а несколько меньшее число, ведь аргументом функции 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)]

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


Содержание раздела