Вот как бы код написал но почему то не не правильно работает при больших 'n' и вроде в подпрограмме что то не так(((Надо сделать с подпрограммой (у меня она находит простые числа)
Program razlochenie;
Var n,i,j,k,l,pr,zp:longint;
Procedure prostie;
BeginFor i:=3to j doFor k:=1to j dobeginif i mod k = 0then l:=l+1;
if l=2then pr:=i;
end;
j:=j+1;
l:=0;
End;
Begin
write('Введите число n');readln(n);
pr:=2;j:=4;l:=0;
write(n,'=');
While n<>1dobeginif (n mod pr = 0) thenbegin
n:=n div pr;
Write(pr,'*');
endelse
Prostie;
end;
readln;
End.
нее охото чтоб через мой метод находило но вот только не катит че то в подпрограмме не так?!
IUnknown
2.04.2012 19:05
Цитата
че то в подпрограмме не так?!
Сама подпрограмма "не так". Ты постоянно начинаешь проверять простоту чисел с одного и того же места, соответственно, у тебя постоянно в одном и том же месте L = 2, и Pr в результате всегда равен 3.
Artem7
2.04.2012 23:01
Спасибо сделал так
Program razlochenie;
Var n,i,j,k,l,pr,zp:longint;
Procedure prostie;
Begin
i:=i+1;
For k:=1to j dobeginif i mod k = 0then l:=l+1;
if l=2then 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<>1dobeginif (n mod pr = 0) thenbegin
n:=n div pr;
Write(pr,'*');
endelse
Prostie;
end;
readln;
End.
IUnknown
3.04.2012 0:08
Лучше
Procedure prostie;
Begin
i:=i+2; { <--- Вот так }
...
, а инициализировать i единицей. Потому что понятно, что четных простых чисел быть не может, так и не надо их проверять.
Artem7
3.04.2012 9:11
Цитата(IUnknown @ 2.04.2012 20:08)
Лучше
Procedure prostie;
Begin
i:=i+2; { <--- Вот так }
...
, а инициализировать i единицей. Потому что понятно, что четных простых чисел быть не может, так и не надо их проверять.
Спасибо ещё раз за помощь)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.