09.04.2008, 23:00
общий
это ответ
Здравствуйте, Денисов Игорь Александрович!
Для решения Вашей задачи можно задать функцию проверки на простоту, которой проверять каждые парные числа на отрезке. Вообще, можно было бы уменьшить число проверок, возможно, введя какие-то флаги, чтобы не проверять дважды одно число, но это загромоздит код. А так мы просто задаём цикл, в котором i будет меняться от n до n-2 (последняя возможная пара - это n-4 и n-2, поэтому рассматривать отрезок дальше не имеет смысла), и проверяем текущее и парное ему значения на простоту (если оба числа простые - выводим их на экран).
PS: Есть отличия от предыдущего решения в варианте реализации цикла - отсутствует дополнительная проверка.
Удачи!
Приложение:
Var n, i: word;function Prost (a: word): boolean; {Функция проверки, простое ли число}Var i: integer;begin Prost:= true; {Начальное значениефункции} if (a<=1) then Prost:= false; {Простые числа строго больше 1 } for i:=2 to a div 2 do {Для доказательства простоты достаточно проверить делимость на числа от 2 и до половины данного числа} if a mod i = 0 then begin Prost:= false; break; end; {Если хоть раз поделилось - не простое}end;begin readln (n); {Считываем n} i:= n; {Начинаем с левого конца отрезка} while (i+2<=2*n) do {И двигаемся, пока парное текущему число не выйдет за границы отрезка} begin if (Prost (i)) and (Prost (i+2)) then {Если текущее число и парное ему - простые} writeln (i, ‘ - ‘, (i+2)); {Выводим их на экран} inc (i); {Наращиваем число на 1} end;end.