Найти 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.

Объяснение кода листинга программы

  1. Объявление функции IsGemini с аргументом n типа longint и возвращаемым значением типа boolean.
  2. Объявление переменных i, sqrtn и delta типа word.
  3. Проверка, является ли число n кратным 6 и больше или равным 6. Если это условие выполняется, выполняются следующие действия.
  4. Установка начального значения переменной i как 5, а переменной delta как 2.
  5. Нахождение квадратного корня из n + 1 и приведение его к целому значению.
  6. Установка значения IsGemini как false.
  7. В цикле, пока i меньше или равно sqrtn, выполняются следующие действия:
    • Проверка наличия делителей для n+1 и n-1. Если хотя бы один делитель обнаружен, происходит выход из цикла.
    • Увеличение значения i на delta.
    • Изменение значения delta с использованием операции xor 6 (переключение между 2 и 4).
  8. Если условие кратности 6 и больше или равности 6 не выполняется, то IsGemini равно результату сравнения n с 4.
  9. Объявление переменных i, k и n типа longint.
  10. Цикл повторяется до тех пор, пока n не станет больше 0, при этом пользователю предлагается ввод n.
  11. Вывод пары простых чисел-близнецов для значений 1, 3 и 5.
  12. Инициализация переменных i и k. Происходит проверка условия, и если k меньше n, выполняются следующие действия:
    • Увеличение значения i на 6.
    • Проверка, является ли число i парой простых чисел-близнецов, и если да, выводится информация о паре.
  13. Конец программы. P.S. форматирование кода Pascal было адаптировано для понимания в текстовом виде.

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы