Creo que su respuesta $24$ es correcto. La función $f(mn) = f(m)f(n)$ tiene la impresionante característica de ser totalmente impotente ante los números primos. Realmente, si $p$ es primo, puede asignar $f(p)$ cualquier valor primo que quieras, y seguro que no haces colisiones si seleccionas un primo diferente para todos los números primos.
Es incluso más potente que eso : ya que la descomposición de números primos siempre existe y es única, dando un valor a todos los números primos define $f$ .
Como has dicho, $f(999) = f(3)^3f(37)$ por lo que el peso de $f(3)$ es mayor que el peso de $f(37)$ . Es entonces mínimo decir que $f(3) = 2$ y $f(37) = 3$ , $2$ y $3$ siendo los números más pequeños por encima de $1$ (y resultan ser primos, lo que simplifica el mapeo). Entonces $f(999) = 24$ .
EDIT : @Henry sugirió completar el mapa con $f(2) = 37 ; f(3) = 2 ; f(37) = 3 ; f(p) = p$ si $p$ es primo y diferente de $2,3,37$ lo cual es totalmente correcto. Por supuesto, $f(1) = 1$ y $f(0) = 0$ .