HOMEWORK 2 整数因子分解问题
问题描述
大于1的正整数 n 都可以分解为 n = x1 * x2 * … * xm
例如:当n=12时,共有8种不同的分解式:
12 = 12
12 = 6*2
12 = 4*3
12 = 3*4
12 = 3*2*2
12 = 2*6
12 = 2*3*2
12 = 2*2*3
算法设计 对于给定正整数n,计算n共有多少种不同的分解式。
输入格式
第一行一个正整数n (1<=n<=1000000)
输出格式
不同的分解式数目
输入样例
12
输出样例
8
算法设计思路
纯递归方法
纯递归方法的算法设计较为简单。当输入为1时,直接返回1。若输入不为1,则从2开始到n进行递归调用,每当用一个因子能整除n,计数加一。为了减少循环次数和递归调用次数,结合质数筛选定理:“n不能够被不大于根号n的任何质数整除,则n是一个质数”,将函数内的循环上限设定为 n−−√ n 。递归函数的传入值为由文件输入的正整数n,内部有一初值为1的计数变量cnt,记录n的分解式个数。函数首先判断n是否为1,若为1,则返回1;若不为1,则开始函数内从2到