好奇的孩子使用的程序可以将数字或表达式分解为以下形式:p1^e1 * p2^e2 * ... * pn^en
。等于的指数1
被省略,例如360 = 2^3 * 3^2 * 5
孩子将该输出作为新输入输入程序中,但是她不理解该^
符号,因此有时她会跳过连接相应素数和指数的一个或多个符号。例如(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280)
由于这些错误,她可能会得到不同的因式分解,可以再次输入(跳过0或多个^
)。她重复此过程,直到因式分解不再更改为止(也许不再存在^
或正确复制了输出)。
您应该编写一个程序或函数,给定一个整数n
(n>1
),以递增顺序输出所有可能的数字,其分解可能是孩子最终得到的分解(包括n
)。例如,输入16
可能的最终分解为(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23
输入详细信息:
- 输入是一个大于的整数
1
- 没有输入将产生大于
2^31-1
- 没有输入将产生比
1000
输出数更多的输入
输出详细信息:
- 以您的语言方便的形式显示的整数列表
例子:
输入=>输出
11 => 11
16 => 16 24 69
360 => 140 360 770 1035 1219 1280 2875 3680
605 => 560 605 840 2415
2048 => 211 2048
58564 => 230 456 1311 2508 9975 12768 13794 20748 58564 114114 322102
这是代码高尔夫球,因此最短的程序获胜。
我们已经没有分解因数了吗?
—
Optimizer
@Optimizer这是完全不同的。
—
randomra 2015年
360的最后一个数字应为3 6 80:2 ^ 3 * 3 ^ 2 * 5 => 23 * 32 * 5 = 3680
—
blutorange
@blutorange谢谢,编辑。
—
randomra 2015年