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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Счетчик простых чисел 
V
    Опции темы
Crater3112
Дата 28.9.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день...Вот есть прога которая находит все числа кратные 5:

Код

procedure ...
var i,a,count:=integer;
begin
a:=Memo1.Lines.Count;
count:=0;
for i:=0 to a-1 do begin
if StrtoInt(Memo1.Lines[i]) mod 5 = 0 then inc(count);
end; 
Label1.Caption:='Числа кратные 5' + InttoStr(count);
end; end; 


Помогите переделать так, чтобы програмка находила только простые (деляться только на себя и на 1) числа ... т.е. 1,3,7,11,13 и т.д. smile Заранее благодарен! 
PM MAIL   Вверх
Alix
Дата 28.9.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

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



код взят отсюда: http://forum.vingrad.ru/forum/topic-60076.html
Код
function IsPrime: boolean;
var
  iter: integer;
begin
  result := true;
  if FTestNumber < 0 then
  begin
    result := false;
    exit;
  end;
  if FTestNumber <= 2 then
    exit;
  for iter := 2 to FTestNumber - 1 do
  begin
    if (FTestNumber mod iter) = 0 then
    begin
      result := false;
      exit;
    end;
  end;
end;

Проверяет, является ли число простым. Но это так, простейшее решение. А вообще см. сюда: Решето эратосфена. Метод поиска простых чисел. Также см. в википедию: Список простых чисел. Там есть список первых 500 простых чисел, а так же пример программы на Pascal'e.

Это сообщение отредактировал(а) Alix - 28.9.2007, 14:02


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Crater3112
Дата 28.9.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



К сожалению никак не пойму, я с Си незнаком...просто помогите переделать мой исходный код  smile 
PM MAIL   Вверх
Alix
Дата 28.9.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

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



Код
program Project1;

{$APPTYPE CONSOLE}

const
  N = 100;

var
  a : array [1..N] of integer;

  i,
  j,
  s : integer;

begin

  a[1] := 0;

  for i := 2 to N do
    a[i] := i;

  for s := 2 to N do
    if a[s] <> 0 then begin
      j := s*2;
      while j <= N do begin
        a[j] := 0;
        inc(j, s);
      end;
    end;

  for i := 1 to N do
    if a[i] <> 0 then
      writeln(a[i]);

  readln;
end.


Если как у тебя, список чисел в Memo и надо проверить сколько из них простых, то так:
Код
function IsPrime(num : integer): boolean;
var
  iter: integer;

begin
  result := false;

  if num < 0 then
    exit;

  if num <= 2 then begin
    result := true;
    exit;
  end;

  for iter := 2 to num - 1 do
    if (num mod iter) = 0 then
      exit;

  result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i     : integer;
  count : integer;

begin
  count := 0;

  for i := 0 to Memo1.Lines.Count-1 do
    if IsPrime(strtoint(memo1.lines[i])) then
      inc(count);

  showmessage('Простых чисел: ' + IntToStr(count));
end;


Это сообщение отредактировал(а) Alix - 28.9.2007, 15:14


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
EvilsInterrupt
Дата 28.9.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

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



Alix, Возьми Дональда Кнута, у него этих алгоритмов много! И вообще алгоритм проверки на простоту это смотря какие числа проверять. Простое ли число -  это очень даже не простой вопрос!!!
PM MAIL WWW ICQ Jabber   Вверх
Alix
Дата 28.9.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

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



Цитата
Alix, Возьми Дональда Кнута, у него этих алгоритмов много! И вообще алгоритм проверки на простоту это смотря какие числа проверять. Простое ли число -  это очень даже не простой вопрос!!!

Не мне советуй. Алгоритм приведен примитивнейший, чтобы было понятно.  А определение простого числа однозначно: "Просто́е число́ — это натуральное число, большее единицы, имеющее ровно два натуральных делителя: 1 и само себя.".  © Wikipedia
Если ты знаешь определение простоты числа для не натуральных чисел, поделись. Однако даже если они и есть, то вряд ли они потребуются конкретно в этой задаче.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Crater3112
Дата 28.9.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Alix спасибо огромное, вроде всё работает ))) Только кажись ты пропустил begin после 
Код

for i := 0 to Memo1.Lines.Count-1 do


Всё равно пасиб    smile 
PM MAIL   Вверх
Alix
Дата 28.9.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

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



нет, ничего не пропущено, код был запущен.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Crater3112
  Дата 28.9.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вопрос решён, тема закрыта) Всем спасибо) 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

1. Публиковать ссылки на вскрытые компоненты

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

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


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

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


 




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


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

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