【分治法】整数因子分解问题

简介: 【分治法】整数因子分解问题

 问题描述:

问题描述:

 大于1 的正整数n 可以分解为:n=x1*x2*…*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 共有多少种不同的分解式。

数据输入:

  由文件input.txt 给出输入数据。第一行有1 个正整数n (1≤n≤2000000000)。

结果输出:

将计算出的不同的分解式数输出到文件output.txt 。

输入文件示例          输出文件示例

input.txt            output.txt

 12                      8

代码如下:

#include <iostream>
using namespace std;
int factor(int n){
    int sum=0;
    for(int i=n;i>1;i--){
        if(n%i==0){//i是n的因子 
            int j=n/i;
            if(factor(j)==0) sum++;
            else{
                sum=sum+factor(j);
            }
        }
    }
    return sum;
}
int main()
{
    int n;cin>>n;
    cout<<factor(n)<<endl;
    return 0;
}

image.gif


目录
相关文章
|
6月前
|
算法 测试技术 C++
【动态规划】【数学】【C++算法】1449. 数位成本和为目标值的最大数字
【动态规划】【数学】【C++算法】1449. 数位成本和为目标值的最大数字
|
存储 人工智能 算法
秒懂算法 | 矩阵连乘问题
给定n个矩阵{A1,A2,A3,…,An},其中Ai与Ai+1(i=1,2,3,…,n-1)是可乘的。用加括号的方法表示矩阵连乘的次序,不同加括号的方法所对应的计算次序是不同的。
810 0
秒懂算法 | 矩阵连乘问题
|
3月前
|
算法
【算法】二分算法——x的平方根
【算法】二分算法——x的平方根
|
6月前
|
算法 测试技术 C++
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
【组合数学】【动态规划】【前缀和】1735生成乘积数组的方案数
|
6月前
|
算法 C++ 索引
寻找最接近子数组和的算法设计及其C++实现
寻找最接近子数组和的算法设计及其C++实现
41 4
|
11月前
|
机器学习/深度学习 算法
算法分析 | 第三套(渐近符号)
算法分析 | 第三套(渐近符号)
96 0
|
算法
基础算法(大数操作 前缀和 差分)
基础算法(大数操作 前缀和 差分)
71 0
|
算法 内存技术
求组合数三种算法
求组合数三种算法
84 0
|
算法 C++
基础算法-整数二分
二分法的基本思想比较简单,是用来在数组当中查找特定元素的算法。 二分可以分为整数二分和浮点二分,本文主要介绍整数二分。
|
算法 C++
容斥原理算法的实现
容斥原理算法的实现
容斥原理算法的实现