Дано естественное число х, вывести на экран все делители этого числа.

Дано естественное число х, вывести на экран все делители этого числа. И я написал программку, пойдёт ли она под данное условие, и если нет, то что нужно поменять:
program zadacha;
var n,i:integer;
begin
i:=1;
while(i begin
if (n mod i=0) then write(i);
end;
writeln('n');
end.

Задать свой вопрос
1 ответ
0. Ты никак не задаёшь n в программке. Для тебя стоит желая бы прочесть его: read(n);
1. Что написано внутри условия цикла while? Если по твоему решению, обязано быть "i lt;= n"
2. Делители будут "прилипать" друг к другу, выводи так: write(i, ' ');
3. Твой счётчик i не возрастает, программа зациклится. После if'а вставь i := i + 1;

Итоговый код:
var n, i: integer;
begin
read(n);
i := 1;
while (i lt;= n) do
begin
if n mod i = 0 then write(i, ' ');
i := i + 1;
end;
writeln('n');
end.

Есть, кстати, альтернативный метод поиска делителей. Выводить их он будет, правда, не в порядке возрастания.
var n, i: integer;
begin
read(n);
i := 1;
while (i * i lt; n) do
begin
if n mod i = 0 then write(i, ' ', n div i, ' ');
i := i + 1;
end;
if i * i = n then write(i, ' ');
writeln('n');
end.
Даша Далецкий-Бычкова
Спасибо огромное
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт