| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:这个程序的算法?
只看楼主 加入收藏
nameaibeida
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-11-16
收藏
 问题点数:0 回复次数:1 
这个程序的算法?
Description
给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * ... * an,并且1 < a1 <= a2 <= a3 <= ... <= an,问这样的分解的种数有多少。注意到a = a也是一种分解。

Input
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (1 < a < 32768)

Output
n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数

Sample Input


2
2
20


Sample Output


1
4
我只知道用递归函数会好做一点,但还是不会算法。
搜索更多相关主题的帖子: 算法 
2008-11-16 11:03
ntmdgbhwdmm
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-11-16
收藏
得分:0 
素数:
一个正整数 a 可以分解成 a=p1^r1 * p2^r2 *  ……*pn^rn(p1 p2 pn 是不同的素数,r1 r2 rn是正整数,在不计顺序的情况下,该表示是唯一的)

1.找出小于a的所有素数
2.用a依次除以一个找出的素数pk。如果能除尽,则 rk++; a/=pk; 直到不能除尽,则换个素数pk+1;
3.所有素数除完后 那就是r1 r2 r3 的排列组合问题了。这就不用说了!
2008-11-16 14:17
快速回复:这个程序的算法?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023206 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved