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