给出一个数,求这样的一个数给分解成各种大于1的数相乘的总数。
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<math.h>
using namespace std;
int n;
int go[1000];
int l;
int hi[1000];
int ans;
void make(int k,int cur)
{
cout<<k<<' '<<cur<<endl;
if (cur==n||(k<l&&cur*go[k]==n))
{
cout<<" "<<cur<<' '<<go[k]<<endl;
ans++;
return;
}
if (k==l)
return ;
if (cur*go[k]<n)
{
if (n%(cur*go[k]))
make(k+1,cur);
else
{
while (!(n%(cur)))
{
make(k+1,cur);
cur*=go[k];
}
}
}
else make(k+1,cur);
}
int main()
{
int i,j,k;
while (cin>>n)
{
memset(hi,0,sizeof(hi));
l=0;
memset(go,0,sizeof(go));
k=n/2;
for (i=2;i<=k;i++)
if (!(n%i))
{
go[l++]=i;
}
ans=0;
if (l)
make(0,1);
cout<<"The big result is : "<<ans+1<<endl;
}
}