因式分解
总时间限制: 100ms 内存限制: 65536kB
描述
将大于1的自然数N进行因式分解,满足 N=a1*a2*……*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
输入
第1行:1个正整数N(N<=2*10^9)
输出
第1行:一个整数,表示N的因式分解方案总数
样例输入
12
样例输出
8
提示
预处理
首先,很多人看到这道题,就毫不犹豫——爆搜~,废话不多说,上爆搜代码!
#include<cstdio>
int ans;
void dfs(int x)
{
if(x==1) //边界条件
{
ans++;
}
else
{
for(int i=2;i<=x;i++)
if(x%i==0) //如果找到因子
dfs(x/i);//继续递归找下一个因子
}
}
int main()
{
int n;
scanf("%d",&n); //输入n
dfs(n);//搜索因子