まず、完全な素数分解は実際には必要なく、底よりも小さい素数への分解のみが必要です (ここでは 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) ...d 2 d 1 d 0
次に、桁を並べ替えると、次のようになります。
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
私が間違いを犯していなければ、これは完全な解決策です..