![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Мне надо было написать код функции проверки числа на простоту. Вот написал:
Код:
function IsSimp(i:integer):boolean; var j:integer; begin for j := 2 to i - 1 do begin if (i mod j)=0 then begin IsSimp:=true; end; end; IsSimp:=false; end; Код:
var chis:integer; begin chis:=4; if IsSimp(chis)=true then begin writeln('Prostoe'); end; readln; end. |
#2
|
||||
|
||||
![]() во первых твоя функция криво считает. простое число - это число которое делиться на себя и на единицу. вот функция которая правильно считает:
Код:
function IsSimp(i:integer):boolean; var j:integer; begin for j := 2 to i do if ((i mod j)=0) then result:=true else result:=false; end; |
#3
|
||||
|
||||
![]() Функция не прекращает работу до последнего end или exit
поэтому надо И ничего страшного в этой мере нет. Наоборот, Вы не прокручиваете весь цикл ( который можно проверять не до самого числа а до его квадратного корня ) и экономите время. В Delphi 2010 можно записать Exit(True); Тоже не обратил внимания. Надо наоборот Код:
function IsSimp(i:integer):boolean; var j:integer; begin for j := 2 to Trunc(Sqrt(i)) + 1 do if ((i mod j)=0) then begin result:=false; // делиться значит не простое exit; end; result:=true; end; Последний раз редактировалось s0Creator, 12.02.2010 в 12:33. |
#4
|
|||
|
|||
![]() Большое спасибо, насчет того что работает до последнего end я то же экспериментальным путем понял, просто решил уточнить) Да правильно насчет квадратного корня, еще раз спасибо
|
#5
|
|||
|
|||
![]() Есть выражение еще короче: Result:= ((i mod j)=0);
|