Подскажите алгоритм - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Как из целочисленного массива выбирать по одному элементу ,чтобы проверить простой ли он(без использования подпрограмм). Пробовал вложенными циклами, но получился бред.
Может с помощью "Решето́ Эратосфе́на".Прочитал в википедии но ни чего особо не понял.

Решение задачи: «Подскажите алгоритм»

textual
Листинг программы
uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
    n,i,j,k,p:byte;
begin
clrscr;
randomize;
repeat
write('Размер массива от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
writeln('Массив');
for i:=1 to n do
 begin
  a[i]:=1+random(50);
  write(a[i]:4)
 end;
writeln;
writeln('Простые числа');
{самый простой и не оптимальный вариант}
k:=0;
for i:=1 to n do
if a[i]>1 then{1 не простое}
 begin
  j:=2;{проверяем делимость начиная с 2}
  p:=0;
  while (j*j<=a[i])and(p=0) do{пока не больше корня из a[i] и не делится}
  if a[i] mod j=0 then p:=1{если делится, дальше не проверяем}
  else j:=j+1;{иначе дальше}
  if p=0 then {если ни на что не делится}
   begin
    k:=1;{фиксируем что есть}
    write(a[i]:4);{выводим}
   end;
 end;
if k=0 then write('В массиве нет простых чисел');
readln
end.

Объяснение кода листинга программы

  1. Объявлены переменные: n, i, j, k, p (byte); a: array[1..nmax] of integer;
  2. Задается размер массива от 2 до 100;
  3. Заполняется массив случайными числами от 1 до 50;
  4. Выводится заполненный массив;
  5. Находим простые числа в массиве;
  6. В самом простом и не оптимальном варианте, для каждого числа в массиве проверяется его делимость, начиная с 2;
  7. Если число делится на какое-то число из диапазона [2..корневая функция из этого числа], то оно не является простым числом;
  8. Если число не делится ни на одно число из диапазона [2..корневая функция из этого числа], то оно является простым числом;
  9. Все простые числа выводятся на экран;
  10. Если в массиве нет простых чисел, выводится сообщение В массиве нет простых чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы