ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ ПАЙТОН НЕ ИСПОЛЬЗУЯ ФУНКЦИИ
долбаёб ебаный
Ученик
(92),
на голосовании
9 месяцев назад
Программу поиска натуральных делителей числа можно существенно сократить, если вспомнить о том, что у каждого делителя d числа n, не превышающего корень из n , есть симметричный ему делитель, равный n // d. Это значит, что достаточно искать делители до корня из n и выводить сразу два делителя: d и n // d, если они не равны друг другу.
Единственная проблема, выводиться делители будут не в порядке возрастания.
Используя структуру данных стек, реализуйте этот алгоритм, чтобы делители выводились в порядке возрастания.
Формат ввода Вводится натуральное число.
Формат вывода Выведите все его делители в порядке возрастания. Пример 1: Ввод 30 Вывод 1 2 3 5 6 10 15 30 Пример 2: Ввод 1000000000001 Вывод 1 73 137 10001 99990001 7299270073 13698630137 1000000000001
n = int(input()) stack = [] for i in range(1, int(n ** 0.5) + 1): if n % i == 0: if n // i == i: stack.append(i) else: stack.append(i) stack.append(n // i) stack.sort() print(*stack)
Единственная проблема, выводиться делители будут не в порядке возрастания.
Используя структуру данных стек, реализуйте этот алгоритм, чтобы делители выводились в порядке возрастания.
Формат ввода
Вводится натуральное число.
Формат вывода
Выведите все его делители в порядке возрастания.
Пример 1:
Ввод
30
Вывод
1 2 3 5 6 10 15 30
Пример 2:
Ввод
1000000000001
Вывод
1 73 137 10001 99990001 7299270073 13698630137 1000000000001