Прикреплённый файл «Mults.py»
Загрузка 1 #!/usr/bin/env python3
2 '''
3 Ввести натуральное число N, вывести все различные разложения N на сомножители
4 без учёта порядка
5 '''
6
7 def demultR(N, m=2):
8 k = m
9 while N//k >= k:
10 if N%k == 0:
11 for res in demultR(N//k,k):
12 yield (k,)+res
13 k += 1
14 yield (N,)
15
16 def demultP(N):
17 stack = [[N,2,2]] # def demultR(N, m=2):
18 while stack: #
19 NS = stack[-1] # N, m, k
20 # k = m
21 if NS[0]//NS[2] >= NS[2]: # while N//k >= k:
22 if NS[0]%NS[2] == 0: # if N%k == 0:
23 n,m,k=NS[0]//NS[2],NS[2],NS[2]#
24 stack.append([n,m,k]) # for res in demult(N//k,k):
25 NS[2] += 1 #
26 continue # yield (k,)+res
27 NS[2] += 1 # k += 1
28 else: #
29 ret = [s[1] for s in stack[1:]] #
30 yield ret+[NS[0]] # yield (N,)
31 stack.pop() #
32
33 N = int(input())
34 for R,P in zip(demultR(N),demultP(N)):
35 print(*R, "/", *P)
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.Вам нельзя прикреплять файлы к этой странице.
