Задать вопрос
7 августа, 07:51

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

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. 7 августа, 08:49
    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.
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Дано натуральное число х, вывести на экран все делители этого числа. И я написал программу, пойдёт ли она под данное условие, и если нет, ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы