Как разложить число на множители всеми возможными способами
def divide(n):
d = 2
while d*d <= n:
if n%d == 0:
print (n, '*')
divide(n//d)
d = d+1
if n>1:
print(n)
print('____')
n = input(n)
n = int(n)
divide(n)
У меня получилось вот это, но оно не работает так, как надо
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
попробуйте так:
def divide(n):
d = 2
flag = False
while d*d <= n:
if n%d == 0:
print (d, '*', end=" ")
divide(n//d)
flag = True
d += 1
if not flag:
print(n)
n = int(input())
divide(n)
Автор решения: Polina
→ Ссылка
Есть пара идей, в код пока не особо получается преобразовать:
Сначала разложим число на простые множители, а потом уже будем их друг на друга комбинациями умножать
Код для нахождения простых делителей:
n=0 #сброс (необязательно)
n =int(input(n))
s_divs=[] #массив простых делителей
def s_div(n): #функция нахождения всех простых делителей n
a = [] #массив простых делителей
d = [] #массив всех 'претендентов'
#перебираем делители
for i in range(n-2): #от 2 до n-1 включительно
d.append(i+2)
for i_2 in range(len(d)): #кол-во претендентов
if n % d[i_2] == 0: #остаток от деления равен нулю
a.append(d[i_2])
print('Простые делители', n, ':', a)
s_divs=s_div(n)
Это плохая идея использовать саму процедуру внутри себя, работает некорректно