Форум » Циклы и ветвления » с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.



полная версия страницы