首先,您实际上并不需要完整的素数分解,只需分解为小于基数的素数(我猜您的意思是 10,但问题可以推广到任何基数)。所以我们只需要分解成前 4 个素数:2、3、5 和 7。如果其余(素数或非素数)因子大于 1,则问题有 0 个解。
现在,假设将数字 p 考虑在内:
p = 2^d1 * 3^d2 * 5^d3 * 7^d4
也由n 数字组成:
p =d(n-1)d(n-2)...d2d1d0
然后,重新排列数字,也将是:
p = 2^q2 * 3^q3 * 4^q4 * 5^q3 * ... * 9^q9
qi >= 0 和 q2 + q3 + ... q9 = n 的位置
还有(由于分解):
for prime=2: d1 = q2 + 2*q4 + q6 + 3*q8
for prime=3: d2 = q3 + q6 + 2*q9
for prime=5: d3 = q5
for prime=7: d4 = q7
所以q5 和q7 是固定的,我们必须找到方程的所有非负整数解:
(其余的都是未知数qi:q2, q3, q4, q6, q8 and q9)
d1 = q2 + 2*q4 + q6 + 3*q8
d2 = q3 + q6 + 2*q9
n - d3 - d4 = q2 + q3 + q4 + q6 + q8 + q9
以上每一种解法,都有数位重排,可通过公式求出:
X = n! / ( q2! * q3! * ... q9! )
需要总结一下。
这可能有一个封闭的公式,使用生成函数,您可以将其发布在 Math.SE
p=24、n=3 的示例:
p = 2^3 * 3^1 * 5^0 * 7^0
我们有:
d1=3, d2=1, d3=0, d4=0
整数解:
3 = q2 + 2*q4 + q6 + 3*q8
1 = q3 + q6 + 2*q9
3 = q2 + q3 + q4 + q6 + q8 + q9
是(q2, q3, q4, q6, q8, q9) =:
(2, 0, 0, 1, 0, 0)
(1, 1, 1, 0, 0, 0)
给:
3! / ( 2! * 1! ) = 3
3! / ( 1! * 1! * 1! ) = 6
和3+6 = 9 的全部解决方案。
p=3628800、n=10 的示例:
p = 2^8 * 3^4 * 5^1 * 7^1
我们有:
d1=8, d2=4, d3=1, d4=1
整数解:
8 = q2 + 2*q4 + q6 + 3*q8
4 = q3 + q6 + 2*q9
8 = q2 + q3 + q4 + q6 + q8 + q9
是(q2, q3, q4, q6, q8, q9)(连同相应的数字和每个解决方案的重新排列):
(5, 0, 0, 0, 1, 2) 22222899 57 10! / (5! 2!) = 15120
(4, 0, 2, 0, 0, 2) 22224499 57 10! / (4! 2! 2!) = 37800
(4, 1, 0, 1, 1, 1) 22223689 57 10! / (4!) = 151200
(3, 2, 1, 0, 1, 1) 22233489 57 10! / (3! 2!) = 302400
(4, 0, 1, 2, 0, 1) 22224669 57 10! / (4! 2!) = 75600
(3, 1, 2, 1, 0, 1) 22234469 57 10! / (3! 2!) = 302400
(2, 2, 3, 0, 0, 1) 22334449 57 10! / (3! 2! 2!) = 151200
(2, 4, 0, 0, 2, 0) 22333388 57 10! / (4! 2! 2!) = 37800
(3, 2, 0, 2, 1, 0) 22233668 57 10! / (3! 2! 2!) = 151200
(2, 3, 1, 1, 1, 0) 22333468 57 10! / (3! 2!) = 302400
(1, 4, 2, 0, 1, 0) 23333448 57 10! / (4! 2!) = 75600
(4, 0, 0, 4, 0, 0) 22226666 57 10! / (4! 4!) = 6300
(3, 1, 1, 3, 0, 0) 22234666 57 10! / (3! 3!) = 100800
(2, 2, 2, 2, 0, 0) 22334466 57 10! / (2! 2! 2! 2!) = 226800
(1, 3, 3, 1, 0, 0) 23334446 57 10! / (3! 3!) = 100800
(0, 4, 4, 0, 0, 0) 33334444 57 10! / (4! 4!) = 6300
这是2043720的全部解决方案,如果我没有犯任何错误的话..