var n,i,k,count: integer;
begin
writeln('Введите натуральное число: ');
readln(n);
count:=0;
for i:=2 to n-1 do begin
if n mod i = 0 then begin
for k:=1 to i-1 do
if (i mod k = 0) then begin
count+=1;
if count<=2 then
writeln(i, ' ');
end;
end;
end;
end.
var
n,i,k: integer;
flagSimple: boolean;
begin
writeln('Введите натуральное число: ');
readln(n);
for i:=2 to (n/2) do
begin
if n mod i = 0 then
begin
flagSimple := true; //считаем пока, что i - простое (ну или count := 0, если использовать число)
for k:=2 to (i/2) do
if (i mod k = 0) then
begin
flagSimple := false;
break; //выходим из цикла for для k, так как обнаружили, что i - не простое
end;
if (flagSimple = true) then
writeln(i, ' ');
end;
end;
end.
var n, i, k, count: integer;
begin
writeln('Введите натуральное число: ');
readln(n);
count := 0;
for i := 2 to n - 1 do begin
if n mod i = 0 then begin
for k := 1 to i - 1 do // ищем делители делителя
if (i mod k = 0) then begin //нашли очередной
count += 1; //увеличили счетчик (и да, для 2 делителя начинать будем уже не с 0)
if count <= 2 then //и сразу очень странная проверка
//мы не закончили поиск, значение счетчика не окончательное
//да и почему 2, поиск то до i - 1
writeln(i, ' ');
end;
end;
end;
end.