Упс, сглупил.
Разность равна не 0, а 2.
Код
program Gemini;
uses Crt;
var nn, nk, np, k, counter_gemini : Integer;
function Simple_Number(Sm:Integer): Boolean; {функция проверки: Sm - простое?}
var x, i : Integer;
begin
Simple_Number := False;
x := 2; I := 1;
while (x<Sm) and (i=1) do
begin
if Sm mod x = 0 then i := 0 else Inc(x);
end;
if i=1 then Simple_Number := True; {если флаг равен 1, то Sm - простое}
end; {function}
begin {main}
ClrScr;
counter_gemini := 0; {counter_gemini - счетчик чисел-близнецов}
WriteLn('===================================');
WriteLn('n? ');
ReadLn(nn);
nk := 2*nn;
np := nn;
Write('Among: ');
for k := nn to nk do
Write(k,' ');
WriteLn;
repeat
if (np mod 2)=0 then Inc(np); {если np-непростое, увеличиваем его на 1}
if Simple_Number(np) {если первое число - простое}
then
begin
Inc(np,2); {переходим на два числа вперед}
if Simple_Number(np) then {если и это число простое}
begin
WriteLn('twins: ',np-2,' ', np); {вывод близнецов}
Inc(counter_gemini);
end;
end
else Inc(np); {иначе (np-непростое) переходим к следующему числу}
until np>=nk;
if counter_gemini=0
then WriteLn('no twins')
else WriteLn('num of pairs: ', counter_gemini);
ReadLn;
end.
Решение не мое.