因式分解 SDUT

Problem 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

Sample Output

8

以下代码借鉴某个大佬

#include 
#include 

using namespace std;

int num = 0;

void solve(int n){
    int t = sqrt(n);
    num++;
    for(int i = 2; i <= t; i++)
    {
        if(n%i == 0)
        {
            solve(n / i);
            if(n / i != i) solve(i);
        }
    }
}

int main()
{
    int n;
    scanf("%d",&n);
    solve(n);
    printf("%d\n",num);
    return 0;
}

你可能感兴趣的:(集训赛,递归)