栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

算法设计与分析 实验一B - 整数因子分解问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法设计与分析 实验一B - 整数因子分解问题

B - 整数因子分解问题
Description
大于1的正整数n可以分解为:n=x1x2xm。例如,当n=12 时,共有8 种不同的分解式:
12=12;
12=6
2;
12=43;
12=3
4;
12=322;
12=26;
12=2
32;
12=2
2*3。
对于给定的正整数n,计算n共有多少种不同的分解式。
Input
输入数据只有一行,有1个正整数n (1≤n≤2000000000)。
Output
将计算出的不同的分解式数输出。
Sample
Input
12
Output
8

#include 
#include 
#include 
long long int f(int x);
int a[500000];
int main()
{
   int n;
   scanf("%d",&n);
   printf("%lldn",f(n));
}
long long int f(int x)
{
    int i;
    long long sum=1;
    if((x<500000)&&a[x]!=0)
    {
        return a[x];
    }
    for(i=2;i<=sqrt(x);i++)
    {
        if(x%i==0)
        {
            sum+=f(i);
            if(i*i!=x)
            {
                sum+=f(x/i);
            }
        }
    }
    if(x<500000)
        a[x]=sum;
    return sum;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/587591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号