引申为一道题目:
将大于1的自然数N进行因式分解,满足N=a1*a2*a3…am
编一程序,对任意的自然数N,
求N的所有形式不同的因式分解方案总数。
如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
Input 输入文件仅有一行包含一个整数N。Output 输出文件仅有一行包含一个整数表示自然数N的因式分解方案总数。Sample Input 12 Sample Output 8 Hint 1 <= N <= 2,000,000,000
不考虑大数的情况下的做法:
利用递归方法求解:
这里用到了动态规划,记忆化搜索(DP的一种实现方式),这种方法只要加一个记录状态的数组就可以了,同时也可以进行递推(顺推实现DP)。另外根据这里输入N的范围,采用long整型数组,因为long是32位表示范围大于 2,000,000,000。