提交时间:2026-03-06 15:19:10
运行 ID: 85159
def count_factorizations(n, min_factor=2): """ 计算正整数n分解为若干个大于等于min_factor的正整数乘积的方案数 保证分解因子按非递减顺序排列,避免重复计算 Args: n: 待分解的正整数 min_factor: 当前允许的最小因子(保证非递减顺序) Returns: 满足条件的分解方案数 """ # 基础情况:n为1表示已经完成分解 if n == 1: return 1 count = 0 # 遍历所有可能的因子,从min_factor到sqrt(n) # 优化:只需检查到sqrt(n),因为若i是因子,则n/i也是因子 i = min_factor while i * i <= n: if n % i == 0: # 找到因子i,递归计算n/i的分解方案数 count += count_factorizations(n // i, i) i += 1 # 特殊情况:n本身作为一个因子(对应分解a=a的情况) # 当n >= min_factor时,可以将n作为最后一个因子 if n >= min_factor: count += 1 return count def main(): """ 主函数:处理多组测试数据,计算每组数据的分解方案数 """ try: # 读取测试数据组数 test_cases = int(input()) # 处理每组测试数据 for _ in range(test_cases): number = int(input()) # 计算分解方案数(初始最小因子为2,因为1<a1) result = count_factorizations(number) print(result) except ValueError as e: print(f"输入格式错误: {e}") except Exception as e: print(f"程序执行出错: {e}") # 程序入口 if __name__ == "__main__": main()