Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на языке Pascal

Выпуск № 343
от 21.11.2004, 18:00

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 547
Отправлено ответов: 2077
Активность: 379.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

sir henry
Статус: Профессиональный
Общий рейтинг: 163.62
[Подробней >>]
ALex_zaw
Статус: Начальный
Общий рейтинг: 200
[Подробней >>]
Tancho
Статус: Профессиональный
Общий рейтинг: 143.53
Телефон: сл. 0359 0391 65 631; 0359 0391 53 105
[Подробней >>]
 
DSota
Статус: Опытный
Общий рейтинг: 124.15
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 546. 1)Помогите с задачей. В принципе задача несложная, но у меня единственное не получается, если я нашёл первый элемент, то как мне сделать так, чтобы начать счет сначало и искать дальше? 2) подскажите простой алгоритм нахождения простых чисел?В приципе... (ответов: 4)

Вопросов: 1, ответов: 4


 Вопрос № 546

1)Помогите с задачей. В принципе задача несложная, но у меня единственное не получается, если я нашёл первый элемент, то как мне сделать так, чтобы начать счет сначало и искать дальше?
2) подскажите простой алгоритм нахождения простых чисел?В приципе я знаю один, но он слишком сложный, я так и не понял до конца как он работает:
for i:=1 to LIMIT do begin
j:=2;
lim:=round(sqrt(i));
while (i mod j <> 0) and (j <= lim) do inc( j );
if (j > lim) then write( i,' ' );
end;


Приложение:


Вопрос отправлен: 18.11.2004, 17:51
Отправитель: Семен

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Приветствую Вас, Семен!
Зайдите на http://algolist.manual.ru/, там довольно много всяких алгоритмов.
Я тоже не великий спец по алгоритмам, поэтому пользуюсь для понимания таким методом:
- расписываю готовое решение на бумажке (экране компа) и решаю его сам, пошагово. Тогда все становится совершенно понятно. :)

Ответ отправлен: 19.11.2004, 05:36
Отправитель: sir henry


Отвечает ALex_zaw

Здравствуйте, Семен!
Попробуйте каждый раз после просмотра массива передавать его в другой, а потом просматривать другой массив и передавать его в первый.
А на счёт простых чисел посмотрите ответы на вопрос №542, там есть то что Вам нужно и очень в принципе понятно и просто.

Ответ отправлен: 19.11.2004, 11:32
Отправитель: ALex_zaw


Отвечает Tancho

Здравствуйте, Семен!
Относно 1) А ты сам какой алгоритм предлагаеш?Не искай экспертов делать вся твою работу!Потрудись предложи свое решение и тогда если проблемов мы поможем!Экспертов нельзя
делать вся твою работу, а только для консултирования и подсказки какие то более сложные проблемов!м
2) Фрагмент прогу, каторая ты предлагаеш реализует так называемый алгоритм решета Эротостена для нахождения все простые чисель меньше заданого!Чего здесь сложного, мне не известен алгоритм более компактный от этом!В приложении я дописал твой фрагмент до действующую прогу!

Приложение:

Ответ отправлен: 19.11.2004, 12:03
Отправитель: Tancho


Отвечает DSota

Здравствуйте, Семен!
1. Номер следующего элемента равен остатку целочисленного деления номера
предыдущего элемента плюс один на размер массива.
2. Что делает алгоритм: для каждого числа от 1 до LIMIT смотрит:
Если оно делиться на какое-то число от 2 до корня из него (больше чем
корень просматривать бесполезно, это уже из математики), проверяется
остаток, если остаток нулевой - то число считается непростым, выход из
while. А если в диапазоне такого числа не нашлось, о стал больше lim, то
число простое.
Что можно: просто создать массив boolean элементов, и из вычеркивать из
него каждый 2-й, 3-й и т.д. элемент, все что останеться и есть простые
числа:
var
simpl:array[2..LIMIT]of boolean;
for i:=2 to LIMIT do simpl[i]:=true;
for i:=2 to LIMIT do begin
j:=i*2;
while j<=LIMIT do begin
simpl[j]:=false;{Вычеркиваем, делиться на i}
j:=j+i;
end;
end;
for i:=2 to LIMIT do begin
if simpl[i] then write (i,' ');
end;


Ответ отправлен: 18.11.2004, 19:45
Отправитель: DSota



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (21)
C / C++ (17)
Perl (4)
Builder / Delphi (17)
Pascal (19)
Basic / VBA (8)
Java / JavaScript (6)
PHP (18)
Криптография (6)
WinAPI (17)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (59)
"Железо" (37)
Поиск информации (20)
Администратору
Windows NT/2000/XP (34)
Linux / Unix (17)
Юристу
Гражданское право (10)
Семейное право (5)
Трудовое право (8)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.





http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное