zoukankan      html  css  js  c++  java
  • 递归之整数因子分解

    一、问题描述

    大于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);          //递归函数,将商继续进行递归
             }

    }

    四、程序结果

  • 相关阅读:
    一道华为笔试题--内存块排序
    正则表达式
    Paxos算法的一个简单小故事
    Zookeeper中的Leader选取机制
    CCF201604-2俄罗斯方块
    Mybatis----Mapper.xml中的输入映射
    Mybatis----mybatis的全局配置文件SqlMapConfig.xml的配置
    Mybatis----开发dao
    Mybatis----入门程序
    Spring----面向切面编程和通知类型
  • 原文地址:https://www.cnblogs.com/cxmhy/p/4464104.html
Copyright © 2011-2022 走看看