Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.05.2014, 21:13
Sweet_blood Sweet_blood вне форума
Прохожий
 
Регистрация: 06.05.2014
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию решить в PascalABC.NET

Помогите решить
Изображения
Тип файла: png прЗ1№1.PNG (2.9 Кбайт, 7 просмотров)
Ответить с цитированием
  #2  
Старый 06.05.2014, 21:36
Sweet_blood Sweet_blood вне форума
Прохожий
 
Регистрация: 06.05.2014
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Помогите решить

Определите наибольшее простое число, меньшее 10000.
Ответить с цитированием
  #3  
Старый 06.05.2014, 22:04
Sweet_blood Sweet_blood вне форума
Прохожий
 
Регистрация: 06.05.2014
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Вычислить точность

помогите пожалуйста
Изображения
Тип файла: png прЗ2№3.PNG (11.3 Кбайт, 5 просмотров)
Ответить с цитированием
  #4  
Старый 06.05.2014, 22:17
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,531
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Однотипные темы необходимо объединять, иначе похоже на спам, за что могут последовать санкции...
Ответить с цитированием
  #5  
Старый 06.05.2014, 22:59
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Sweet_blood
Определите наибольшее простое число, меньшее 10000.
Наверное самый быстрый способ - с помощью Решета Эратосфена, но он требует массива соответствующего размера:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  max = 10000;
var
  nums: array [2..max] of Boolean;
  i, j: Integer;
begin
  for i := 2 to max do
    nums[i] := True;

  for i := 2 to max do
  begin
    if nums[i] then
    begin
      j := i + i;
      while j <= max do
      begin
        nums[j] := False;
        Inc(j, i);
      end;
    end;
  end;

  for i := max downto 2 do
  begin
    if nums[i] then
    begin
      ShowMessageFmt('Число %d является наибольшим простым числом которое не превышает %d', [i, max]);
      Break;
    end;
  end;
end;
Простым перебором - более медленный способ, зато не требует дополнительной памяти:
Код:
procedure TForm1.Button2Click(Sender: TObject);
const
  max = 10000;
var
  i, j: Integer;
  IsPrime: Boolean;
begin
  for i := max downto 3 do
  begin
    IsPrime := True;
    for j := 2 to Trunc(Sqrt(i)) do
    begin
      if (i mod j) = 0 then
      begin
        IsPrime := False;
        Break;
      end;
    end;

    if IsPrime then
    begin
      ShowMessageFmt('Число %d является наибольшим простым числом которое не превышает %d', [i, max]);
      Break;
    end;
  end;
end;
Правда этот способ можно слегка оптимизировать исключая чётные числа, но пусть это будет домашним заданием

Последний раз редактировалось poli-smen, 06.05.2014 в 23:06. Причина: Добавление ссылки
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter