В возрастающем порядке напечатайте все целые числа - Pascal ABC
Формулировка задачи:
Здравствуйте! Помогите решить, заранее спасибо)
В возрастающем порядке напечатать целые числа из диапазона 1.. 10000, представимые в виде n2 + m2, где n, m>=0
Решение задачи: «В возрастающем порядке напечатайте все целые числа»
textual
Листинг программы
var a: array [1..10000] of Boolean; m, m2, n, i: Integer; begin for m:=1 to Trunc(SqRt(High(a))) do begin m2:=Sqr(m); n:=1; repeat i:=m2+Sqr(n); Inc(n); if i<=High(a) then a[i]:=True else Break; until False; end; for i:=Low(a) to High(a) do if a[i] then Write(' ',i); WriteLn; end.
Объяснение кода листинга программы
- Создается переменная
a
, которая представляет собой массив булевых значений размером от 1 до 10000. - Затем определяются три переменные
m
,m2
иn
, которые будут использоваться в цикле. Переменнаяm
инициализируется значением 1, аm2
иn
устанавливаются равными квадратуm
. - Далее идет цикл, который выполняется для каждого значения
m
в диапазоне от 1 до округленного вверх значения корня из максимального значения массиваa
. Внутри цикла переменныеm2
иn
пересчитываются как квадратm
и значениеn
устанавливается равным 1. - Цикл повторяется, пока значение
i
, вычисленное какm2 + Sqr(n)
, не станет меньше или равно максимальному значению массиваa
. Если значениеi
попадает в диапазон массиваa
, то соответствующий элемент массива устанавливается в значениеTrue
. Если это не происходит, цикл прерывается с помощью оператораBreak
. - После завершения внутреннего цикла происходит внешний цикл, который проходит по всем элементам массива
a
от наименьшего до наибольшего значения. Если значение элемента массива равноTrue
, то перед ним выводится пробел. - В конце программы выводится символ новой строки с помощью функции
WriteLn
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д