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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2011, 11:12   #1
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
Сообщение Простые числа

Здравствуйте, помогите с задачей пожалуйста:
Задан массив из 10ти положительных чисел, нужно вывести только простые числа.
Мне нужна функция, которая будет вычислять является ли число простым.
kuy вне форума Ответить с цитированием
Старый 28.10.2011, 11:17   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А проблема в чем? Самый простой алгоритм: цикл от 2 до sqrt(число) и проверять в нем — если остаток от деления числа на счетчик цикла = 0, то оно не простое (отметить это с помощью переменной типа boolean, например).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.10.2011, 12:54   #3
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Код:
   function checksimple(i: integer): boolean;
   var j:integer;
   begin
        for j:=2 to i-1 do
            begin
            if i mod j=0 then
               begin
               result:=false;
               Exit;
               end;
            end;
        result:=true;
   end;
hon вне форума Ответить с цитированием
Старый 28.10.2011, 14:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Hon, ну ОЧЕНЬ неоптимально (и есть небольшие косячки с возможными некорректными данными)...

я бы предложил такой вариант:
Код:
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;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2011, 14:44   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Кстати, на форуме уже много раз предлагался алгоритм установления простого числа, представленный Сергеем (Serge_bliznykov), надо было вопользоваться поиском по форуму, поскольку, повторюсь, обсуждался он неоднократно.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простые числа Ddr Общие вопросы C/C++ 1 12.04.2011 21:59
Простые числа Verochka Помощь студентам 14 02.12.2008 20:30
Простые числа werser Помощь студентам 8 18.06.2008 07:24
простые числа Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 2 05.12.2007 12:23