Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ ПАЙТОН НЕ ИСПОЛЬЗУЯ ФУНКЦИИ

долбаёб ебаный Ученик (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
Голосование за лучший ответ
Александр Иванищев Ученик (199) 10 месяцев назад
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)
Похожие вопросы