Подскажите алгоритм - 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.
Объяснение кода листинга программы
- Объявлены переменные: n, i, j, k, p (byte); a: array[1..nmax] of integer;
- Задается размер массива от 2 до 100;
- Заполняется массив случайными числами от 1 до 50;
- Выводится заполненный массив;
- Находим простые числа в массиве;
- В самом простом и не оптимальном варианте, для каждого числа в массиве проверяется его делимость, начиная с 2;
- Если число делится на какое-то число из диапазона [2..корневая функция из этого числа], то оно не является простым числом;
- Если число не делится ни на одно число из диапазона [2..корневая функция из этого числа], то оно является простым числом;
- Все простые числа выводятся на экран;
- Если в массиве нет простых чисел, выводится сообщение
В массиве нет простых чисел
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д