Алгебра в программе Mathematica


Пример 4



Пример 4




Эта программа выводит список пар. В каждой паре сначала указана длина интервала, а затем — его начало, причем указывается, естественно, начало того ближайшего к началу натурального ряда интервала, который имеет указанную длину. Длина же для данного начала указана наибольшая: она не может быть увеличена, так как следующее за указанным интервалом число — простое. Полученные результаты, весьма нетривиальные, удобно представить в виде таблицы .

Имея такую таблицу, несложно указать и наибольший интервал составных чисел, содержащийся в данном начальном отрезке начального ряда. Однако для этой цели совсем несложно определить функцию, которая все делает автоматически.
LargestPrimeGap[n_Integer?(#<3&)]:= Max[Drop[f,1]-Drop[#,-1]&[Prime/@Range[2,PrimePi[n]]]]
Данная функция определяет наибольшую разность между двумя последовательными простыми числами, не превосходящими п. Заметьте, что для определения количества простых чисел, не превосходящих 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[2An]}],{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[ЕЛп]]}],{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}
Действительно, это основание кажется наиболее естественным, хотя все же нельзя не отметить хаотичность увеличения разностей и на этот раз. Но что подтвердилось — так это существенное падение быстродействия. Чтобы выяснить, с чем это связано, давайте запустим Диспетчер задач Windows. Изменим несколько нашу программу.

base=3;Do[Print[{n, LargestPrimeGap[baseAn]}],{n,2,17}]

Вот полученные результаты.
{2,2} {3,4} {4,6} {5,14} {6,18} {7,34} {8,34} {9,52} {10,72} {11,86} {12,114} {13,132} {14,154} {15,154} {16,210} {17,222}
Когда быстродействие упало, я бы сказал, даже не до нуля, а до безобразия, я сделал копию экрана Диспетчера задач Windows (Рисунок 5.1). Из нее хорошо видна причина снижения быстродействия — слишком большой файл подкачки и высокая интенсивность страничного обмена. Из-за этого фактически система пробуксовывает, процент загрузки центрального процессора (ЦП) не повышается выше 30.

Теперь выполним наши вычисления для основания 5. На этот раз система Mathematica сама подскажет причину падения быстродействия.
base=5;Do[Print[{n,LargestPrimeGap[bаsе^n]}], {n,2,17}] {2,4}-{3,8} {4,18} {5,34} {6,36} {7,72} {8.,112} {9,132} {10,154} {11,220} {12,248} No more memory available. Mathematica kernel has shutdown. Try quitting other applications and then retry.









Начало  Назад  Вперед


Книжный магазин