памагите исправте если я чёта на партачел в программе

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
wewe
Сообщения: 20
Зарегистрирован: 16 апр 2007, 20:18

программа выдаёт число простое или нет но тут в чём та загвостка не работает как надо

program Project2;
var
A,f,k:integer;
w:boolean;
function IsSmp (A: Integer): Boolean;
begin
if A<=1 then
IsSmp:=false;
for k:=2 to trunc(sqrt(A)) do begin
if (A mod k)=0 then IsSmp:=false else isSmp:=true;
exit;
end;
end;
begin
writeln ('vvedite 4isli');
readln(f);
if IsSmp(f)=true then writeln('4islo prostoe')
else writeln('4islo ne prostoe')

end.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

wewe писал(а):программа выдаёт число простое или нет но тут в чём та загвостка не работает как надо
Если чсило такое, что trunc(sqrt(A)) < 2, то ты ни разу не попадаешь в цикл, и результату функции у тебя не присваивается никкое значение. А если A <=1 то после присвоения false можно сразу сделвть выход из функции:

Код: Выделить всё

begin
if A<=1 then
  begin
    IsSmp:=false;
    exit;
  end
else
  IsSmp:=true;
{ Далее - почти по тексту. }
  for k:=2 to trunc(sqrt(A)) do begin
    if (A mod k)=0 then 
      begin
        IsSmp:=false;
        exit;
      end;
  end;
end;
Ответить