Форум » Циклы и ветвления » с1 » Ответить
с1
ELENA1991: Добрый день. написать программу по вычислению суммы простых делителей. дано: var m,n,i,k,s:integer; begin readln(n); s:=0;m:=n; for i:=2 to m do begin if n mod i = 0 then s:=s+i; if n mod i = 0 then n :=n div i end; write (s) Cкажите, пожалуйста, как исправлением строк, а не переделывнием цикла во вложенный цикл, можно получить сумму не делителей, а именно простых делителей?
Ответов - 5
MEA: Вопрос по условию: Если число делится на 8, то в сумму должны попасть все двойки 2+2+2 или только 2?
oval: По логике вещей у 56 два простых делителя 2 и 7, я думаю надо исправить if n mod i = 0 then n :=n div i на while n mod i = 0 do n :=n div i;
MEA: ELENA1991 пишет: не переделывнием цикла во вложенный цикл в условии нет про отсутствие "вложенного цикла" исправление oval пишет: if n mod i = 0 then n :=n div i на while n mod i = 0 do n :=n div i; делает вложенный цикл, но условию не противоречит. И внешний цикл тоже лучше переделать на условный.
MEA: ELENA1991 пишет: не переделывнием цикла во вложенный цикл в условии нет про отсутствие "вложенного цикла" исправление oval пишет: if n mod i = 0 then n :=n div i на while n mod i = 0 do n :=n div i; делает вложенный цикл, но условию не противоречит. И внешний цикл тоже лучше переделать на условный.
sangria91: Условие формулируется следующим образом: Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число n, не превосходящее 100000, и выводится сумма простых делителей этого числа. Программист торопился и написал программу неправильно: (текст программы) 1. Напишите, что выведет эта программа при вводе числа 32. 2. Приведите пример такого числа n, что, несмотря на ошибки, программа печатает правильный ответ. 3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки: 1) выпишите строку, в которой сделана ошибка; 2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки Что имеется ввиду под "суммой простых делителей этого числа": 2 или 2+2+2 - я не знаю. Я отталкивалась от того, что сумма простых делителей числа 32 = 2.
полная версия страницы