整数因子分解问题

 整数因子分解问题 

´问题描述: 

大于1 的正整数n 可以分解为:n=x1 *x 2*…*xm 。                            

例如,当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。 

´编程任务: 

对于给定的正整数n,编程计算n 共有多少种不同的分解式。 

´数据输入: 

输入数据第一行有1 个正整数n (1≤n≤2000000000) 。 

´结果输出: 

将计算出的不同的分解式数。  输入                          输出

                         

 12                              8 

此题可用递归写,代码如下: #include<iostream.h>

long    total=0;

int main()

{

void solve(long n);

long n;

cin>>n;

solve(n);

cout<<total<<endl;

return 0;

}

void solve(long n)

{

  if(n==1)

    total++;

  else

  {

    for(long i=2;i<=n;i++)

      if(n%i==0)

        solve(n/i);

  }

}

点赞