Function IsPrime(m: integer): boolean;
var
i: integer;
p: boolean;
begin
p := true;
for i := 2 to m - 1 do
if (m mod i) = 0 then p := false;
IsPrime := p
end;
var
n, i, j: integer;
flag: boolean;
begin
repeat
Write('Введите натуральное число, большее 2 :');
Readln(n);
flag := (n < 2) or (n mod 2 = 1);
if flag then
Writeln('Число введено с нарушением, повторите ввод');
until not flag;
Writeln('Варианты представления числа в виде суммы двух простых:');
for i := 1 to n do
for j := 1 to (n div 2) do
if (IsPrime(i) and IsPrime(j)) and (i + j = n) then writeln(i, '+', j);
end.
Тестовое решение:
Введите натуральное число, большее 2: 110
Варианты представления числа в виде суммы двух простых:
67+43
73+37
79+31
97+13
103+7
107+3
109+1