Вывод квадратов натуральных чисел

Задача

Вывести все квадраты натуральных чисел, не превосходящие данного числа N.
Пример: N=50 | 1 4 9 16 25 36 49

Решение

Алгоритм решения задачи: 

  1. Ввести число N.
  2. Присвоить x единицу.
  3. Пока y < n
    1. Возвести x в квадрат и присвоить полученное значение переменной y.
    2. Если y < n, вывести значение y на экран.
    3. Увеличить значение x на единицу.

Программа на языке Паскаль:  

var
        x,y,N:integer;
begin
        {1 вариант}
        write('Enter N: ');
        readln(N);
        x:=1;
 
        while y<N do begin
                y:=x*x;
                if y<n then
                        write(y,' ');
                x:=x+1;
        end;
        writeln;
 
        {2 вариант}
        write('Enter N: ');
        readln(N);
        x:=1;
 
        repeat
                y:=x*x;
                if y<n then
                        write(y,' ');
                x:=x+1;
        until y>N;
 
        readln
end.

Условный оператор if используется в цикле для того, чтобы не выводить последнее значение y, которое уже превосходит N.

Можно ли как-нибудь решить задачу проще? Да, если избавиться от переменной у

var x,n: integer;
begin
    write('n = ');
    readln(n);
    x := 1;
    while sqr(x) < n do begin
        write(sqr(x),' ');
        x := x + 1
    end;
 
readln
end.

Тема

Циклы

Уровень

Простые задачи

Добавить комментарий