| n | def factorization(n, start=2, current=None): | n | def get_factorizations(num, min_factor=2, current_factors=None): |
| if current is None: | | if current_factors is None: |
| current = [] | | current_factors = [] |
| result = [] | | factorizations_list = [] |
| if current: | | if current_factors: |
| result.append(current + [n]) | | factorizations_list.append(current_factors + [num]) |
| i = start | | divisor = min_factor |
| while i * i <= n: | | while divisor * divisor <= num: |
| if n % i == 0: | | if num % divisor == 0: |
| result.extend(factorization(n // i, i, current + [i])) | | factorizations_list.extend(get_factorizations(num // divisor |
| | | , divisor, current_factors + [divisor])) |
| i += 1 | | divisor += 1 |
| return result | | return factorizations_list |
| | | |
| n | def main(): | n | def main_function(): |
| n = int(input().strip()) | | input_num = int(input().strip()) |
| all_factors = factorization(n) | | all_factorizations = get_factorizations(input_num) |
| all_factors.append([n]) | | all_factorizations.append([input_num]) |
| all_factors.sort() | | all_factorizations.sort() |
| for factors in all_factors: | | for factors in all_factorizations: |
| print('*'.join(map(str, factors))) | | print('*'.join(map(str, factors))) |
| if __name__ == '__main__': | | if __name__ == '__main__': |
| t | main() | t | main_function() |