Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2013, 22:02   #1
Skipper Ok
Пользователь
 
Аватар для Skipper Ok
 
Регистрация: 08.11.2013
Сообщений: 23
По умолчанию Объяснить функцию

Объясните пожалуйста следующий код. Почему в нем используется для проверки, является ли число простым, корень квадратный. В общем объяснить весь код досконально.
Код:
 function prime(sum:integer):boolean;
var h:integer; 
begin
prime:=True;
  for h:=2 to round(sqrt(sum)) do
    if (sum mod h)=0 then 
begin
prime:=False;
Break; 
end;
end;
Skipper Ok вне форума Ответить с цитированием
Старый 21.12.2013, 22:12   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Цитата:
Сообщение от Skipper Ok Посмотреть сообщение
Почему в нем используется для проверки, является ли число простым, корень квадратный...
Корень квадратный используется лишь как ограничитель для перебора возможных делителей h .
Например, проверяем число 100. Проверять на делители более 10 не имеет смысла. Число логика.
type_Oleg вне форума Ответить с цитированием
Старый 21.12.2013, 22:31   #3
Skipper Ok
Пользователь
 
Аватар для Skipper Ok
 
Регистрация: 08.11.2013
Сообщений: 23
По умолчанию

значит, на конкретном примере, это будет выглядеть так:
допустим, что у меня sum=59, то
Код:
for h:=2 to round(sqrt(59)) do   //округленно корень из 59 равен 8
    if (59 mod h)=0 then    // 59 mod 8 неравно нулю, значит, число простое
А корень из простого числа может дать целый ответ? или корень из простого числа не может дать целый ответ?

Последний раз редактировалось Skipper Ok; 21.12.2013 в 22:34.
Skipper Ok вне форума Ответить с цитированием
Старый 21.12.2013, 22:35   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Skipper Ok, похоже вы не знаете, как работает оператор for
h будет меняться от 2 до 8 вкл. Проверка будет выполняться 7 раз

И что такое true, false тоже не знаете.
type_Oleg вне форума Ответить с цитированием
Старый 21.12.2013, 22:48   #5
Skipper Ok
Пользователь
 
Аватар для Skipper Ok
 
Регистрация: 08.11.2013
Сообщений: 23
По умолчанию

Нет, ну почему!? первоначально будем считать, что
Код:
prime:=True
присваиваем... если по условию число является простым, то оно примет значение True, а если нет, то цикл прерывается и число принимает значение False, разве не так ли?
дальше по следующему условию можно вывести на экран:
Код:
 if prime(sum) then writeln('True') else writeln('False');
Skipper Ok вне форума Ответить с цитированием
Старый 21.12.2013, 22:54   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Да, все правильно, это я сам ваш ответ не понял.

Корень из любого простого конечно не целый.
type_Oleg вне форума Ответить с цитированием
Старый 22.12.2013, 14:29   #7
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

А причем тут корень из простого числа??? Книгу открыть побывали, там объясняется почему с некоторой вероятностью можно проверять до корня...
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объяснить программу snacki Помощь студентам 6 01.10.2013 21:36
Объяснить KIRILOW Помощь студентам 0 24.12.2012 10:29
Как объяснить? Xenm Свободное общение 11 21.09.2010 11:27
маятник, объяснить manuk Помощь студентам 0 26.05.2010 08:21
Можете объяснить? Bayram_662 Компоненты Delphi 1 12.01.2010 22:51