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

Тест на простоту. Функция PrimeQ.

Упражнение 5.2.
Найдите все простые числа, записываемые не более чем N единицами. Иными словами, составьте список всех натуральных n<N, для которых является простым число, состоящее из и единиц. Рассмотрите случай N = 5000.

Решение.
Достаточно ввести в блокнот следующую программу.

Mill[n_] = (10 ^ n - 1) / 9;
Do[If[PrimeQ[Mill[n]], Print[n, ","]], {n, 5000}]

Однако время выполнения программы можно сократить, если вспомнить, что число данного вида может быть простым, только если п простое. Тогда программа несколько усложнится.

Mill[n_] = (10 ^ n - 1) / 9;
Do[If[PrimeQ[n], If[PrimeQ[Mill[n]], Print[n, ","]]], {n, 5000}]

В результате счета по этой программе будут выведены следующие числа:

2, 19, 23, 317, 1031

Упражнение 5.3.
Составьте список всех натуральных n<N, для которых является простым число вида 10n +1 = 1000……………………….00001 (n-1 нулей в середине), состоящее из n+1 цифр. Рассмотрите случай N -131071 = 217 -1.

Решение.
Такие числа могут быть простыми лишь в том случае, если п является степенью двойки, т.е. если n = 2k. (При нечетных п, все такие числа делятся, например, на сумму оснований, т.е. на П.) Учитывая это, цикл можно вести лишь По показателям степеней двойки. Печатать нужно лишь те степени двойки, при которых рассматриваемое число оказывается простым. Предельное значение, при котором можно остановить цикл, равно наибольшему k, при котором 2* £N. Однако нужно учесть случай k = 0. Тогда программа будет выглядеть так.

M10001[n_] = (10 ^ (2 ^ n) + 1);
Do[If[PrimeQ[M10001[n]], Print[2 ^ n, ","]], {n, 0, 16}]

В результате счета по этой программе будет выведено только два числа:

1, 2

Упражнение 5.4.
Найдите номера простых чисел Фибоначчи, не превышающие N. Иными словами, нужно составить список всех натуральных r&N, для которых число Фибоначчи Fn является простым. Рассмотрите случай N=25 000.

Решение. Такие числа могут быть простыми лишь в том случае, если n является простым числом или n= 4. Поэтому цикл можно вести лишь по простым числам, учитывая, конечно, исключение n = 4. Печатать нужно лишь те n, при которых число Фибоначчи Fn оказывается простым. Вот как может выглядеть программа.

n1 = 25000;
Do[If[n == 4 || PrimeQ[n], If[PrimeQ[Fibonacci[n]], Print[n, ","]]], {n, n1}]

В результате прогона этой программы будут выведены только следующие числа:

3, 4, 5, 7, 11, 13, 17, 23, 29, 43, 47, 83, 131, 137, 359, 431, 433, 449, 509, 569, 571.2971.4723.5387.9311, 9677, 14431

Как видите, таких чисел совсем немного. В 1963 году наибольшим известным из этих чисел было только 47, которому отвечало всего лишь десятизначное число Фибоначчи.

Упражнение 5.5.
Среди факториалов есть только одно простое число: 2 = 21. Найдите все такие натуральные n, не превышающие N, что n!-1 – простое. Иными словами, нужно составить список всех натуральных n<N, для которых число n!-1 является простым. Рассмотрите случай N = 1 000.

Решение.
Вот как может выглядеть программа.

n1 = 1000;
Do[If[PrimeQ[n!-1], Print[n, ","]], {n, n1}]

Казалось бы, ничего необычного, однако обратите внимание на пробел между знаком минус - и единицей 1. Если вы его не введете, программа будет синтаксически верной, но n! и -1 просто перемножатся, и вы фактически будете искать простые числа среди факториалов.

В результате прогона этой программы будут выведены следующие числа:

3, 4, 6, 7, 12, 14, 30, 32, 33, 38, 94, 166, 324, 379, 469, 546, 974

Упражнение 5.6.
Найдите все такие натуральные n, не превышающие N, что n!+1 – простое. Иными словами, нужно составить список всех натуральных n>N, для которых число л!+1 является простым. Рассмотрите случай N= 1 000.

Решение.
Вот как может выглядеть программа.

n1 = 1000;
Do[If[PrimeQ[n!+1], Print[n, ","]], {n, n1}]

В результате прогона этой программы будут выведены следующие числа:

1, 2, 3, 11, 27, 37, 41, 73, 77, 116, 154, 320, 340, 399, 427, 872

Как видите, таких чисел совсем немного.

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