Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ сомножители простого числа

Автор: -ice- 6.04.2005 23:06

Код

var
n : integer;
j: integer;
begin
writeln ('Введите целое число');
readln (n);
if n=0 then
writeln ('для нуля лишена смысла')
else if n=1 then
writeln ('нет')
else
writeln ('‘Сомножели числа ',  n,' :');
if n<0 then
writeln ('-1, ');
n := -n;
j :=2;
while n> 1 do begin
while (n mod  j) = 0 do begin
writeln (j,',');
n := n div j;
end;
j :=j + 1;
end;
end.



не раскладывает на сомножители положительное число, что не так, помогите! плиз

Автор: volvo 6.04.2005 23:22

Вообще-то это делается вот так:

Код
var
 i, x: word;
begin
 Write('Введите целое число'); ReadLn(x);
 If x = 0 then Writeln('для нуля лишена смысла')
 else if x = 1 then Writeln('нет')
       else begin
         i:=2;
         while (x>1) and (x mod i = 0) do begin
           write(i:4);
           x:= x div i;
         end;
         i:=3;
         while (i < x div 2) do begin
           while (x>1) and (x mod i = 0) do begin
             write(i:4);
             x:= x div i;
           end;
           inc(i,2);
         end;
         if x>1 then writeln(x:4);
       end { else };
 writeln;
end.