var i,j,n:longint; f:boolean; begin writeln('Введите число'); readln(n); if n<2 then writeln('Простых делителей нет') else begin write('Число ',n,' ','= 1'); for i:=2 to n do if n mod i=0 then begin f:=true; j:=2; while f and(j<=round(sqrt(i/2)))do begin if i mod j=0 then f:=false else j:=j+1; end; if f then write('*',i); end; end; end.
Объяснение:
Хочу показать табличный решения подобных задач по шагам.
Шаг первый. Лена и Аня - сладкоежки. Исключаем капусту и сметану.
Шаг второй. Аня любит сладкие пироги. Помечаем зеленым цветом для Ани пироги с вареньем. Ване достались пироги с капустой.
С пирогами разобрались. Помечаем коричневым цветом горизонтали с пирогами.
Шаг третий. Лене достались блины с вареньем. Помечаем зеленым цветом для Лены эту клетку, а всю горизонталь - коричневым.
Шаг четвертый. Осталась одна не закрашенная клетка - для Светы оладьи со сметаной. Закрашиваем ее зеленым цветом.
var i,j,n:longint;
f:boolean;
begin
writeln('Введите число');
readln(n);
if n<2 then writeln('Простых делителей нет')
else
begin
write('Число ',n,' ','= 1');
for i:=2 to n do
if n mod i=0 then
begin
f:=true;
j:=2;
while f and(j<=round(sqrt(i/2)))do
begin
if i mod j=0 then f:=false
else j:=j+1;
end;
if f then write('*',i);
end;
end;
end.
Тестовое решение:
Введите число
2345
Число 2345 = 1*5*7*35*67