SDUT —— 因式分解

因式分解


Description

将大于1的自然数N进行因式分解,满足N=a1a2a3…am。
编一程序,对任意的自然数N(1< N<=2,000,000,000),求N的所有形式不同的因式分解方案总数。如N=12,共有8种分解方案,他们分别是:
12=12
12=6
2
12=43
12=3
4
12=322
12=26
12=2
32
12=2
2*3

Input

输入只有一行,一个整数N。

Output

输出只有一行,一个整数表示自然数N的因式分解方案总数。

Sample

Input

12

Output

8


#include<stdio.h>

int f(int n, int m)
{
    // n = mk * qk;
    // Num(n) = Num(q2) + ... + Num(qm);
    if (n < 4)
        return 1;
    if (m == 1)
        return 0;
    if (n % m)
        return f(n, m-1);
    return f(n, m-1) + f(n/m, n/m);
}

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d\n", f(n, n));
    return 0;
}
上一篇:SDUT递推题目


下一篇:C 小粉的难题 SDUT