На вход программе подается натуральное число n. Напишите программу, которая
вычисляет сумму всех его делителей.
Входные данные
На вход программе подается натуральное число n.
Выходные данные
Программа должна вывести последовательно каждый делитель числа n и итоговую
сумму всех делителей n.
Sample Input:
5
Sample Output:
1
5
Сумма делителей: 6
Python
Помогите пожалуйста с Python
Этот алгоритм намного быстрее для больших чисел:
def getFactors(n):
factors = {1}
p, inc = 2, 1
while p * p 1:
factors.update([f * n for f in factors])
return sorted(factors)
fs = getFactors(int(input()))
print(*fs, f"Сумма делителей: {sum(fs)}", sep = '\n')
Интересно, что у Андрея Корчмарека программа работает быстро только для маленьких чисел, так как в ней происходит тупой полный перебор. Для больших чисел, например для n=1234567890987654, у просто Андрея правильный ответ получается за 48 секунд, у меня за 28, но, как я уже сказала, можно ещё ускорить, а при помощи факторизации (как в ответе выше !) ответ получается всего за 2 секунды (это у меня на фаблете Samsung, для других вычислительных средств время, естественно, будет другим). Вы хоть бы за одно это человеку плюс поставили!
Вот пример решения вашей задачи на Python:
```
n = int(input())
sum_of_divisors = 0
for i in range(1, n+1):
if n % i == 0:
print(i)
sum_of_divisors += i
print("Сумма делителей:", sum_of_divisors)
```
Сначала мы считываем число n с помощью функции `input()` и преобразуем его в целое число с помощью `int()`. Затем мы создаем переменную `sum_of_divisors`, которая будет использоваться для хранения суммы делителей.
Затем мы запускаем цикл `for`, который проходит по всем числам от 1 до n включительно. Если n делится на текущее число без остатка, то мы выводим его на экран с помощью `print()` и добавляем его к сумме делителей.
В конце программы мы выводим сумму делителей с помощью `print()` и передаем ей строку "Сумма делителей:" и значение переменной `sum_of_divisors`.
```
n = int(input())
sum_of_divisors = 0
for i in range(1, n+1):
if n % i == 0:
print(i)
sum_of_divisors += i
print("Сумма делителей:", sum_of_divisors)
```
Сначала мы считываем число n с помощью функции `input()` и преобразуем его в целое число с помощью `int()`. Затем мы создаем переменную `sum_of_divisors`, которая будет использоваться для хранения суммы делителей.
Затем мы запускаем цикл `for`, который проходит по всем числам от 1 до n включительно. Если n делится на текущее число без остатка, то мы выводим его на экран с помощью `print()` и добавляем его к сумме делителей.
В конце программы мы выводим сумму делителей с помощью `print()` и передаем ей строку "Сумма делителей:" и значение переменной `sum_of_divisors`.
Напасс Укуренко
Ругается на строку if
Напасс Укуренко
Так же тут нет вывода 1-го и 2-го значения, выводиться только сумма делителей.
Напасс Укуренко
Вопрос решил, немного дописав код. Спасибо за основу!
Похожие вопросы
- Написать код, прошу помогите пожалуйста на python
- Помогите, пожалуйста, решить задачу Python
- Помогите пожалуйста, я начинающий программист и я столкнулся с проблемой. Как сделать локализацию Minecraft Python API?
- Помогите пожалуйста с задачей по python!
- Python, помогите, пожалуйста
- Помогите с заданием Python
- Python.Помогите пожалуйста!!! Очень тяжёлая задача!
- Помогите пожалуйста задачей по Python.
- Задача 10. Игра «Компьютер угадывает число» язык кода Python помогите пожалуйста
- Помогите пожалуйста с задачей на Python.