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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 17:10   #1
stil
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 17
По умолчанию процедура.

всем привет.

создайте пжл. процедуру.

найти все простые числа в диапозоне (от 0 до 255)

буду благодарен.
stil вне форума
Старый 12.05.2012, 17:13   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

В чём проблемы?

PS: Предположим, что Delphi.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума
Старый 12.05.2012, 17:15   #3
stil
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 17
По умолчанию

я вообще не понимаю как создать её.
stil вне форума
Старый 12.05.2012, 17:21   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

не самый быстрый алгоритм но сойдет
Код:
var
   i, j:Integer;
   log: Boolean;
begin
  for i:=0 to 255 do
  begin
    log := false;
    for j:=2 to trunc(sqrt(i)) do
    begin
      if i mod j =0 then
      begin
        log := true;
        Break;
      end;
    end;

    if not log then
    Memo1.Lines.Add(IntToStr(i));
  end;
end;
Помог? Ну так нажми на весы!
SNUPY вне форума
Старый 12.05.2012, 17:22   #5
stil
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 17
По умолчанию

спасибо большое.
stil вне форума
Старый 12.05.2012, 17:31   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Код:
for j:=2 to trunc(sqrt(i))
округлить квадратный корень? заачем?
Код:
i div 2
помоему проще
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума
Старый 12.05.2012, 18:32   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Проще вообще ни на что не делить.
Но практика хорошего тона требует не озадачивать комп лишней работой.
или у нас по определению (i div 2)=trunc(sqrt(i))?
s-andriano вне форума
Старый 12.05.2012, 18:34   #8
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
округлить квадратный корень? заачем?
Код:
i div 2
помоему проще
Дальше за целой частью квадратного корня исследуемого числа бежать нет смыла, т.к. это точка симметрии делителей.
Например:
возьмем число 256 (16*16)
и имеем
1*256=256
2*128=256
4*64=256
8*32=256
16*16=256
32*8=256
64*4=256
128*2=256
256*1=256



Простой пример:
возьмем 10^100 мой вариант остановиться на 10^50, а ваш на 5*10^99. Дальше подсказывать что из этого лучше?
Помог? Ну так нажми на весы!

Последний раз редактировалось SNUPY; 12.05.2012 в 18:40.
SNUPY вне форума
Старый 12.05.2012, 18:35   #9
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
(i div 2)=trunc(sqrt(i))?
ВОт это ща вообще к чему?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума
Старый 12.05.2012, 19:38   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

"Выпендрился"
Код:
function simplest(a:integer):boolean;
begin
asm
  cmp a,1
  jle @go
  cmp a,2
  jz @ok
  mov ecx,1
  @looper:
  inc ecx
  xor edx,edx
  mov eax,a
  div ecx
  cmp edx,0
  jz @go
  cmp ecx,eax
  JB @looper
  @ok:
  mov result,true
  jmp @end
  @go:
  mov result,false
  @end:
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
Memo1.Clear;
for i:=0 to 255 do
  if simplest(i) then
    Memo1.Lines.Add(IntToStr(i));
end;
Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
ВОт это ща вообще к чему?
К тому, что, как уже объяснили выше, будет гораздо больше итераций.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 12.05.2012 в 19:43.
BDA вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура giv93 Паскаль, Turbo Pascal, PascalABC.NET 5 10.12.2011 18:10
Процедура ЗЛОбнаЯ Помощь студентам 5 18.09.2010 18:12
Процедура lex1398 SQL, базы данных 3 02.09.2010 15:54
Процедура jester_1936 Помощь студентам 5 20.12.2009 17:45
Процедура в процедура в C++ Builder Ecosasha C++ Builder 2 06.06.2009 17:17