Помощь - Поиск - Пользователи - Календарь
Полная версия: Разложить данное число на простые множители
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Artem7
Вот как бы код написал но почему то не не правильно работает при больших 'n' и вроде в подпрограмме что то не так(((Надо сделать с подпрограммой (у меня она находит простые числа)
Program razlochenie;
Var n,i,j,k,l,pr,zp:longint;
Procedure prostie;
Begin
   For i:=3 to j do
   For k:=1 to j do
   begin
   if i mod k = 0 then l:=l+1;
   if l=2 then pr:=i;
   end;
   j:=j+1;
   l:=0;
End;
Begin
   write('Введите число n');readln(n);
   pr:=2;j:=4;l:=0;
   write(n,'=');
   While n<>1 do begin
   if (n mod pr = 0) then begin
   n:=n div pr;
   Write(pr,'*');
   end else
   Prostie;
   end;
   readln;
End.

Artem7
Цитата(IUnknown @ 2.04.2012 14:19) *

нее охото чтоб через мой метод находило но вот только не катит че то в подпрограмме не так?!
IUnknown
Цитата
че то в подпрограмме не так?!
Сама подпрограмма "не так". Ты постоянно начинаешь проверять простоту чисел с одного и того же места, соответственно, у тебя постоянно в одном и том же месте L = 2, и Pr в результате всегда равен 3.
Artem7
Спасибо сделал так

Program razlochenie;
Var n,i,j,k,l,pr,zp:longint;
Procedure prostie;
Begin
   i:=i+1;
   For k:=1 to j do
   begin
   if i mod k = 0 then l:=l+1;
   if l=2 then pr:=i;
   end;
   j:=j+1;
   l:=0;
End;
Begin
   write('Введите число n ');readln(n);
   pr:=2;j:=4;l:=0;i:=2;
   write(n,'=');
   While n<>1 do begin
   if (n mod pr = 0) then begin
   n:=n div pr;
   Write(pr,'*');
   end else
   Prostie;
   end;
   readln;
End.
IUnknown
Лучше
Procedure prostie;
Begin
   i:=i+2; { <--- Вот так }
   ...
, а инициализировать i единицей. Потому что понятно, что четных простых чисел быть не может, так и не надо их проверять.
Artem7
Цитата(IUnknown @ 2.04.2012 20:08) *

Лучше
Procedure prostie;
Begin
   i:=i+2; { <--- Вот так }
   ...
, а инициализировать i единицей. Потому что понятно, что четных простых чисел быть не может, так и не надо их проверять.

Спасибо ещё раз за помощь)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.