# Flatten a list without increasing the length of the array

I'm trying to make a list of rules where every integer is replaced with a string of it's prime factorization:

$$\left( \begin{array}{c} 1\to \left\{1^1\right\} \\ 2\to \left\{2^1\right\} \\ 3\to \left\{3^1\right\} \\ 4\to \left\{2^2\right\} \\ 5\to \left\{5^1\right\} \\ 6\to \left\{2^1,3^1\right\} \\ 7\to \left\{7^1\right\} \\ 8\to \left\{2^3\right\} \\ 9\to \left\{3^2\right\} \\ 10\to \left\{2^1,5^1\right\} \\ 11\to \left\{11^1\right\} \\ \end{array} \right)$$

However, I don't want the rules to be lists. I want 6 to map to $2^1\cdot 3^1$... and so on. How do I accomplish this?

The factorization code is:

FactorInt[x_]:=Module[{},
(Superscript @@@ FactorInteger[x])
]

• Analogously to: mathematica.stackexchange.com/q/133083/5478?
– Kuba
May 2, 2018 at 16:47
• What's Collatz? Is that really needed here? May 2, 2018 at 16:59
• It isn't. I'm just going to ask another question later since this one is answered. May 2, 2018 at 17:01

factorInteger[x_Integer] := Row[Superscript @@@ FactorInteger[x]]

With[{numbers = Range@10},