码迷,mamicode.com
首页 > 其他好文 > 详细

递归之整数因子分解

时间:2015-04-28 22:23:12      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

一、问题描述

大于1的正整数n可以分解为n=x1*x2*...*xm.给定一个大于1的整数,然后统计其组成形式的个数,如输入12:

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;
共8种不同的分解式。

如输入10:

10=10;

10=5*2;

10=2*5;

共3种不同的分解式。

 

二、问题分析

从12的分解式可以看出,从12递减到2找12的因子,如果可以被整除,则将商作为新的值,继续寻找它的因子,直到不能再被分解,即为质数为止,所以本程序采用递归思想。

 

三、程序设计

#include<iostream>

using namespace std;

 

int count=1;               //从1开始计数,此时已经包含数字本身

void out(int n);           //递归函数,函数声明

 

void main()
{
        int number;
        cout<<"Please input the number:"; 
        cin>>number;

        out(number);        //执行函数

        cout<<"共有的分解情况数:"<<count; 

        while(1);
}

//递归函数
void out(int n)
{
     for(int j=n-1;j>1;j--)  //从n-1递减到2,寻找约数
        if(n%j==0)
        {
              count++;         //如果能被除尽,则加1
              out(n/j);          //递归函数,将商继续进行递归
         }

}

 

四、程序结果

技术分享

技术分享

递归之整数因子分解

标签:

原文地址:http://www.cnblogs.com/cxmhy/p/4464104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!