Задать вопрос
16 сентября, 17:23

Дано натуральное число х, вывести на экран все делители этого числа. И я написал программу, пойдёт ли она под данное условие, и если нет, то что нужно поменять:

program zadacha;

var n, i:integer;

begin

i:=1;

while (i begin

if (n mod i=0) then write (i) ;

end;

writeln ('n') ;

end.

+4
Ответы (1)
  1. 16 сентября, 20:16
    0
    0. Ты никак не задаёшь n в программе. Тебе стоит хотя бы прочитать его: read (n) ;

    1. Что написано внутри условия цикла while? Если по твоему решению, должно быть "i < = n"

    2. Делители будут "прилипать" друг к другу, выводи так: write (i, ' ') ;

    3. Твой счётчик i не увеличивается, программа зациклится. После if'а вставь i : = i + 1;

    Итоговый код:

    var n, i: integer;

    begin

    read (n) ;

    i : = 1;

    while (i < = 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 < 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.
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Дано натуральное число х, вывести на экран все делители этого числа. И я написал программу, пойдёт ли она под данное условие, и если нет, ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике