Вот как бы код написал но почему то не не правильно работает при больших '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.
нее охото чтоб через мой метод находило но вот только не катит че то в подпрограмме не так?!
IUnknown
2.04.2012 15:05
Цитата
че то в подпрограмме не так?!
Сама подпрограмма "не так". Ты постоянно начинаешь проверять простоту чисел с одного и того же места, соответственно, у тебя постоянно в одном и том же месте L = 2, и Pr в результате всегда равен 3.
Artem7
2.04.2012 19:01
Спасибо сделал так
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
2.04.2012 20:08
Лучше
Procedure prostie; Begin i:=i+2; { <--- Вот так } ...
, а инициализировать i единицей. Потому что понятно, что четных простых чисел быть не может, так и не надо их проверять.
Artem7
3.04.2012 5:11
Цитата(IUnknown @ 2.04.2012 20:08)
Лучше
Procedure prostie; Begin i:=i+2; { <--- Вот так } ...
, а инициализировать i единицей. Потому что понятно, что четных простых чисел быть не может, так и не надо их проверять.
Спасибо ещё раз за помощь)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.