Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> решето Эратосфена, на turbo pascal 
:(
    Опции темы
Лера
Дата 15.3.2005, 14:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну вообщем у меня проблема с этими задачками:
задача1:
Напишите в строчку подряд первые 10 простых чисел - получится шестнадцаретичное число. Теперь вычеркните 10 цифр так, чтобы из оставшихся 6-ти цифр без нарушения порядка их следования образовалась бы наибольшее возможное число. Решить с помощью решета Эратосфена. (нужно написать функцию используя множества).

задача2:
Укажите 1000 идущих подряд натуральных чисел, ни одно из которых не является простым. Написать функцию для определения простых чисел используя решето Эратосфена.



вот само решето Эратосфена:
Код

Uses Crt;
const
  N = 255;
type
  Numbers = set of 2..N;
var
  S     :Numbers;
  k,m,i,ss :integer;
begin{5}
clrscr;
  S:=[2..N];

  k:=2;
  ss := trunc(sqrt(N))+1;
while k<=ss do
  begin{1}
    if k in S then
    begin{2}
      m:=2;
      while m*k<=N do
      begin{3}
    {    if m*k<=N then  }
         S:=S-[m*k];
         m:=m+1;
      end;{3}
    end;{2}
  k:=k+1;
 end;{1}
  k:=2;
  while S<>[] do
  begin{4}
    if k in S then
      Write(k,'  ');
    S:=S-[k];
    k:=k+1;
  end;{4}
readln;
end.{5}


примерное решение первой задачки я знаю, но в ней я не знаю как шестнадцатеричное число перевести в массив(причем по одному элементу). Можно ли как нибудь так сделать?

А вторую задачку я вообще не понимаю, как можно выделить 1000 чисел, если допустимо только 256.
Помогите пожалуйста smile
  Вверх
Zero
Дата 15.3.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата
но в ней я не знаю как шестнадцатеричное число перевести в массив(причем по одному элементу)

Ну на сколько я понял, то тебе нужно преобразовать твоё число из цифры в строку, а потом по одному символу строки переписывать в массив, который будет равен длине строки.
Цитата
как можно выделить 1000 чисел, если допустимо только 256
Это только в строке, а в размерность массива зависит от его типа, в часности если у тебя из простых чисел он, значит типа integer можно сделать, а там сам массив должен заполнятся из других чисел, ну у тебя не сказано ис каких, возможно раз не сказано, то их можно заполнить на Рандоме.
PM MAIL ICQ   Вверх
Лера
Дата 15.3.2005, 22:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











с первой я разобралась, а вот со второй все равно не понимаю что делать smile
  Вверх
Zero
Дата 15.3.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата
а вот со второй все равно не понимаю что делать

Что именно тебе непонятно?
PM MAIL ICQ   Вверх
Лера
Дата 16.3.2005, 06:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











я никак не могу понять алгоритм решения
  Вверх
Zero
Дата 16.3.2005, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Вообщем так:
Цитата
Написать функцию для определения простых чисел используя решето Эратосфена.
Судя по этому, означает что те числа которые найдены после применения алгоритма, в твоём случае являются простыми. Т.е. Множество [0..255] - [полученых решетом Эратосферна] ─ есть те самые не простые.
А дальше нужно вывести заданное кол-во чисел, идущие в том порядке как они остались во ножестве, но 1000 не получится, max 255. Помоему ты перепутала задание, может не так списала, или опечатка в методичке, даже в первом задании идут числа, такие как 10 и 6, с чего бы вдруг тут ставить 1000.
Я бы сделал как тебе сейчас сказал, а вывод их кол-ва сделал параметрически, т.е. чтобы в программе было приглашение ввести нужное кол-во чисел, и после нажатия они выводились.
Хотя лучше всего бы это всё уточнить у преподователя, написано как то некорректно...
PM MAIL ICQ   Вверх
Fedor
Дата 16.3.2005, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Лера, ты не хочешь зарегестрироваться на нашем форме? smile


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Лера
Дата 17.3.2005, 06:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Fedor @ 16.3.2005, 18:57)
Лера, ты не хочешь зарегестрироваться на нашем форме? smile

а что гостей здесь не любят?!
  Вверх
Лера
Дата 17.3.2005, 06:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как решить задачу без решета Эратосфена, можно поподробнее...
  Вверх
Fedor
Дата 17.3.2005, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Цитата
а что гостей здесь не любят?!

ну почему же так сразу и не любят. Просто сейчас создается ощущение общение с анонимом, неизвестно откуда пришедшим. С зарегестрированным человеком общаться приятнее, да и у тебя будет много новых возможностей.


Цитата
А как решить задачу без решета Эратосфена, можно поподробнее...

Идешь ы цикле по натуральному ряду. Каждое число проверяешь на простоту. Если число простое, обнуляешь счетчик. Если нет - увеличиваешь на единицу. Когда счетчик будет равен 1000, выдаешь диапазон.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
poor_yorik
Дата 2.4.2005, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 12.1.2005
Где: Общаги г. Киева

Репутация: нет
Всего: 8



Ну вообще если ты использешь решето эротосфена, то тебе нужно заводить массив, который содержит все пройденые простые числа (это и есть решето smile ). И ты, как сказал Fedor, идешь по всем целым числам, и кажджое пытаешся поделить на имеющиеся в массиве числа. Если не делится нацело на на одно, то оно простое и счетчик нужно обнулять.
Но вообще, существует теорема, что между числами j и 2*j+1, есть хотя бы одно простое. Так что я не сильно уверен, что этот ряд находится в рамках longint. Попробую сам его поискать... smile
--------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай...
PM MAIL YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.