Подскажите алгоритм - 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..корневая функция из этого числа], то оно является простым числом;
- Все простые числа выводятся на экран;
- Если в массиве нет простых чисел, выводится сообщение
В массиве нет простых чисел
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д