Заполнить одномерный массив простыми числами - Turbo Pascal (29055)
Формулировка задачи:
Выручайте. На этом форуме неправильное решение
Решение задачи: «Заполнить одномерный массив простыми числами»
textual
Листинг программы
uses crt; const nmax=100; var a:array[1..nmax] of integer; n,m,i,k,lm:integer; f:boolean; begin clrscr; repeat write('Размер массива от 1 до ',nmax,' n='); readln(n); until n in [1..nmax]; a[1]:=2; {записываем в массив простых чисел одно известное} k:=1; {число найденных простых чисел} m:=3; {первый "кандидат" в простые числа} while k<n do begin lm:=trunc(sqrt(m)); f:=true; i:=1; while (i<=k) and f and (a[i]<=lm)do {условие проверки делимости числа n} if m mod a[i]=0 then f:=false else i:=i+1; if f then begin k:=k+1; {добавляем найденное n} a[k]:=m {в массив простых чисел} end; m:=m+2 {следующий кандидат в простые числа} end; for k:=1 to n do write(a[k]:4); readln end.
Объяснение кода листинга программы
- Создается подключение к библиотеке crt.
- Объявляются константы и переменные: nmax, n, m, i, k, lm, f.
- Очищается экран с помощью функции clrscr.
- Пользователю предлагается ввести размер массива от 1 до nmax.
- Записывается в массив a первое простое число, равное 2.
- Инициализируются переменные k и m: k=1, m=3.
- Запускается цикл while, который будет выполняться до тех пор, пока k меньше n и все числа в массиве a меньше или равны lm.
- В цикле выполняется проверка делимости числа n на каждое число в массиве a. Если число m делится на a[i] без остатка, то переменная f устанавливается в false, иначе i увеличивается на 1.
- Если значение переменной f равно true, то увеличивается значение переменной k на 1 и в массив a записывается число m.
- После завершения внутреннего цикла while, если значение переменной f равно true, то выполняется шаг 9.
- Для каждого числа k от 1 до n выполняется операция записи в массив a значения a[k].
- Выполняется операция чтения из массива a значений, которые соответствуют найденным простым числам.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д