Найти N пар простых чисел-близнецов - Pascal
Формулировка задачи:
помогите пожалуйста , как реализовать эту задачу
Найти N пар простых чисел, которые отличались бы друг от друга на 2 («близнецы»). Использовать функции поиска «близнецов» и простых чисел.
Решение задачи: «Найти N пар простых чисел-близнецов»
textual
Листинг программы
function IsGemini(n: longint): boolean;
var i, sqrtn, delta: word;
begin
if (n >= 6) and (n mod 6 = 0)
then begin
i := 5;
delta := 2;
sqrtn := trunc(sqrt(n + 1));
IsGemini := false;
while i <= sqrtn do
begin
if ((n - 1) mod i = 0) or ((n + 1) mod i = 0) then exit;
inc(i, delta);
delta := delta xor 6 {смена шага, то 2, то 4}
end;
IsGemini := true;
end
else IsGemini := n = 4
end;
var i, k, n: longint;
begin
repeat
write('n > 0; n = ');
readln(n)
until n > 0;
writeln('1: 3, 5');
i := 0;
k := 1;
while k < n do
begin
inc(i, 6);
if IsGemini(i)
then begin
inc(k);
writeln(k, ': ', i - 1, ', ', i + 1)
end
end;
readln
end.
Объяснение кода листинга программы
- Объявление функции
IsGeminiс аргументомnтипа longint и возвращаемым значением типа boolean. - Объявление переменных
i,sqrtnиdeltaтипа word. - Проверка, является ли число
nкратным 6 и больше или равным 6. Если это условие выполняется, выполняются следующие действия. - Установка начального значения переменной
iкак 5, а переменнойdeltaкак 2. - Нахождение квадратного корня из
n + 1и приведение его к целому значению. - Установка значения
IsGeminiкак false. - В цикле, пока
iменьше или равноsqrtn, выполняются следующие действия:- Проверка наличия делителей для
n+1иn-1. Если хотя бы один делитель обнаружен, происходит выход из цикла. - Увеличение значения
iнаdelta. - Изменение значения
deltaс использованием операции xor 6 (переключение между 2 и 4).
- Проверка наличия делителей для
- Если условие кратности 6 и больше или равности 6 не выполняется, то
IsGeminiравно результату сравненияnс 4. - Объявление переменных
i,kиnтипа longint. - Цикл повторяется до тех пор, пока
nне станет больше 0, при этом пользователю предлагается вводn. - Вывод пары простых чисел-близнецов для значений 1, 3 и 5.
- Инициализация переменных
iиk. Происходит проверка условия, и еслиkменьшеn, выполняются следующие действия:- Увеличение значения
iна 6. - Проверка, является ли число
iпарой простых чисел-близнецов, и если да, выводится информация о паре.
- Увеличение значения
- Конец программы. P.S. форматирование кода Pascal было адаптировано для понимания в текстовом виде.