NOI 1.13.22 因子分解 题解(C++)
今天的题解有关递归和质数,尽管作者很讨厌递归,但还是发现递归简单,还是用了递归,此时此刻,作者只想说:我太难了~~
不说了,说多了都是泪啊,请听题:
NOI 1.13.22:因子分解
总时间限制: 1000ms 内存限制: 65536kB
描述
输入一个数,输出其素因子分解表达式。
输入
输入一个整数 n (2 <= n < 100)。
输出
输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。
样例输入
60
样例输出
2^2*3 *5//不含空格
首先你可以看到加粗的部分是2<=n<=100,so我们可以列一个一到一百的质数表,方便使用,可以做一个.cpp打印质数表。懒得写的也可以直接使用我下面打印的质数直接复制进去:
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
看看递归的伪代码吧:
//counter,用作表示几次幂
void fill(int n/*当前数*/,int num/*用于表示在考虑第几个质数*/){
if(n == 1){
//不可再分解
if(counter == 1){
//为一次幂
cout<<z[num];
}else{
//其他次幂
cout<&