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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2011, 20:27   #1
Dima170792
Пользователь
 
Аватар для Dima170792
 
Регистрация: 04.04.2011
Сообщений: 76
Вопрос в интервале (1000 .. 9999) найти все простые числа (Delphi)

Доброго времени суток!ув.форумчане помогите пожалуста с решением задачи по информатике,язык программирования -borland Delphi 7 !условия задачи следующие:в интервале (1000 .. 9999) найти все простые числа,каждое из которых имеет такое свойство,что сумма первой и второй цифр записи этого числа равняеться сумме третей и четвёртой цыфры. Если можно-выложите полный код программы.Заранее спасибо!
Dima170792 вне форума Ответить с цитированием
Старый 03.05.2011, 20:36   #2
eatlant
 
Регистрация: 11.04.2011
Сообщений: 9
По умолчанию

сначала - обычное решето эратосфена, а затем с оставшимися числами делаешь следующее: можно перевести в строку и элементарно проверить свойство,что сумма первой и второй цифр записи этого числа равняеться сумме третей и четвёртой цыфры.
eatlant вне форума Ответить с цитированием
Старый 03.05.2011, 20:41   #3
Dima170792
Пользователь
 
Аватар для Dima170792
 
Регистрация: 04.04.2011
Сообщений: 76
По умолчанию

Цитата:
Сообщение от eatlant Посмотреть сообщение
сначала - обычное решето эратосфена, а затем с оставшимися числами делаешь следующее: можно перевести в строку и элементарно проверить свойство,что сумма первой и второй цифр записи этого числа равняеться сумме третей и четвёртой цыфры.
А можна подробнее -кодом-потомучто если чесно-я не знаю как ето организовать!
Dima170792 вне форума Ответить с цитированием
Старый 03.05.2011, 20:52   #4
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Dima170792 Посмотреть сообщение
А можна подробнее -кодом-потомучто если чесно-я не знаю как ето организовать!
Вот и мне интересно, как работает решето для массива, который начинается не с 2-ки? Потому что мне кажется, что оставшиеся после отсеивания числа можно проверить на простоту только полным перебором. Имеется ввиду общий случай, когда сам массив не очень большой, но он начинается с очень большого числа, и соответственно нету списка простых чисел которые меньше начального элемента массива.
Greek9000 вне форума Ответить с цитированием
Старый 03.05.2011, 20:59   #5
eatlant
 
Регистрация: 11.04.2011
Сообщений: 9
По умолчанию

обычно. решето на произвольном отрезке ничем не отличается фактически от решета на отрезке начиная с 2
eatlant вне форума Ответить с цитированием
Старый 03.05.2011, 21:10   #6
Dima170792
Пользователь
 
Аватар для Dima170792
 
Регистрация: 04.04.2011
Сообщений: 76
По умолчанию

пожалуста-киньте хотяб примерный код-вобще ничего не пойму!!!
Dima170792 вне форума Ответить с цитированием
Старый 03.05.2011, 21:34   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
function isPrime(X: LongInt): boolean;
var i: integer;
Begin
     isPrime:=false;
     if x<2 then Exit;
     if not odd(x) and (x<>2) { проверяем на чётность  }
          then exit;
     i:=3;
     while i <= sqrt(x) do { проверяем только нечётные }
     begin
          if x mod i = 0 then Exit;
          inc(i,2);
     end;
     isPrime:=true;
End;
var i : integer;
begin
  for i:=1000 to 9999 do
    if  ((i div 1000)+ (i div 100 mod 10) = 
         (i mod 100 div 10) + (i mod 10)) and IsPrime(i) then
    WriteLn(i);
  Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.05.2011, 12:50   #8
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от eatlant Посмотреть сообщение
обычно. решето на произвольном отрезке ничем не отличается фактически от решета на отрезке начиная с 2
Не согласен!
Для решета начинающегося с 1000 простыми будут 1000, 1001, 1003, 1005 ... , что является неправильным. В этом случае работать будет только метод предложенный Serge_Bliznykov - ну или по крайней мере какой-нибудь другой переборный метод.
Greek9000 вне форума Ответить с цитированием
Старый 04.05.2011, 20:47   #9
Dima170792
Пользователь
 
Аватар для Dima170792
 
Регистрация: 04.04.2011
Сообщений: 76
Радость

Цитата:
Сообщение от Greek9000 Посмотреть сообщение
Не согласен!
Для решета начинающегося с 1000 простыми будут 1000, 1001, 1003, 1005 ... , что является неправильным. В этом случае работать будет только метод предложенный Serge_Bliznykov - ну или по крайней мере какой-нибудь другой переборный метод.
Я нашёл правильное решение-
Код:
procedure TForm1.btn1Click(Sender: TObject);
var s : string;
    d,d1,d2,d3,d4,d5,d6: integer;
begin
    for d := 1000 to 9999 do begin
      s := IntToStr(d);
      d1 := StrToInt(s[1]);
      d2 := StrToInt(s[2]);
      d3 := StrToInt(s[3]);
      d4 := StrToInt(s[4]);
      d5 := d1 + d2;
      d6 := d3 + d4;
      if d5 = d6 then begin
        mmo1.Lines.Add(s);
      end;
    end;
end;
кому интересно-работает!

Последний раз редактировалось Dima170792; 04.05.2011 в 22:44.
Dima170792 вне форума Ответить с цитированием
Старый 04.05.2011, 21:13   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
кому интересно-работает!
Кому интересно, это НЕПРАВИЛЬНОЕ решение!

Цитата:
задачи следующие:в интервале (1000 .. 9999) найти все простые числа
выделенное слово Вам ни о чём не говорит?!

правильный вариант решения в пост #7
если Вы его не поняли - я не виноват...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти определённые простые числа в интервале [Паскаль] Юкоша Помощь студентам 4 24.12.2010 15:57
Найти все простые числа в заданном диапазоне Nikita++ Помощь студентам 8 20.10.2010 20:05
найти из указанного диапазона все простые числа мария2507 Microsoft Office Excel 11 03.04.2010 17:38
Pascal В интервале целых чисел найти все числа кратные 7 NewBi Помощь студентам 5 19.03.2010 19:55