Помощь - Поиск - Пользователи - Календарь
Полная версия: Разложить данное число на простые множители
Форум «Всё о Паскале» > 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 единицей. Потому что понятно, что четных простых чисел быть не может, так и не надо их проверять.

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