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