Vi venir otro gran desafío en PPCG, y realmente me encantan algunos primos. Luego leí mal el texto introductorio, y me pregunté qué habían creado los cerebros creativos aquí.
Resulta que la pregunta planteada era trivial, pero me pregunto si lo mismo puede decirse de la pregunta que leí (mal):
6 puede representarse con 2 ^ 1 * 3 ^ 1, y 50 puede representarse con 2 ^ 1 * 5 ^ 2 (donde ^ indica exponencia).
Tu tarea:
Escriba un programa o función para determinar cuántos primos distintos hay en esta representación de un número.
Entrada:
Un número entero n tal que 1 <n <10 ^ 12, tomado por cualquier método normal.
Salida:
El número de primos distintos que se requieren para representar los factores primos únicos de n.
Casos de prueba:
Input Factorisation Unique primes in factorisation representation
24 2^3*3^1 2 (2, 3)
126 2^1*3^2*7^1 3 (2, 3, 7)
8 2^3 2 (2, 3)
64 2^6 1 (2) (6 doesn't get factorised further)
72 2^3*3^2 2 (2, 3)
8640 2^6*3^3*5^1 3 (2, 3, 5)
317011968 2^11*3^5*7^2*13^1 6 (2, 3, 5, 7, 11, 13)
27 3^3 1 (3)
Esta no es una secuencia OEIS.
Puntuación:
Este es el código de golf , ¡la puntuación más baja en bytes gana!

64? ¿Es2 (2,3)(ya que 6 puede representarse como 2 * 3) o1 (2)(ignora el 6)?64el resultado esperado es 1 (2). Me gusta la idea de hacerlo de forma recursiva, pero esa no es la forma en que leo la pregunta original. Pensé que8640era un caso de prueba adecuado, pero debería haber sido más explícito, gracias.Respuestas:
Mathematica, 39 bytes
Pruébalo en línea!
gracias a Martin Ender (-11 bytes)
fuente
Casesresulta ser más corto queSelect(-4 bytes):Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&(pasa todos los casos de prueba en un núcleo nuevo)Count[Union@@FactorInteger@#,_?PrimeQ]&? (No he verificado todos los casos de prueba)05AB1E ,
97 bytesGuardado 2 bytes gracias a Kevin Cruijssen
Pruébalo en línea!
Explicación
fuente
€pOdespués de fusionar los factores primos y exponentes:ÓsfìÙ€pO€que no es necesario.MATL , 8 bytes
Pruébalo en línea!
fuente
Jalea ,
97 bytesPruébalo en línea! o Echa un vistazo a la suite de prueba.
¿Cómo?
ÆFFQÆPS ~ Programa completo. ÆF ~ Factorización prima como pares [primo, exponente]. F ~ Acoplar. Q ~ Deduplicar. ÆP ~ Para cada uno, verifique si es primo. 1 si es verdadero, 0 si es falso. S ~ Sum.fuente
Gaia , 6 bytes
Pruébalo en línea!
ḋcalcula la factorización prima, como pares [primo, exponente] ._aplana la lista.uelimina elementos duplicados.ṗ¦asigna a través de los elementos y devuelve 1 si se encuentra un primo, 0 de lo contrario.Σresume la lista.fuente
CJam (13 bytes)
Conjunto de pruebas en línea
Esto es bastante sencillo: obtener primos con multiplicidades, reducir a valores distintos, filtrar primos, contar.
Lamentablemente, Martin señaló algunos casos que no fueron manejados por el truco ligeramente interesante en mi respuesta original, aunque también proporcionó un ahorro de 1 byte al observar que dado
mpda0o1puede ser mapeado en lugar de filtrado.fuente
Ohm v2 ,
65 bytes-1 byte gracias a @ Mr.Xcoder
Pruébalo en línea!
fuente
ä{UpΣEn realidad , 7 bytes
Pruébalo en línea!
Explicación:
fuente
Python 2 ,
142135119 bytesPruébalo en línea!
fuente
Cáscara ,
1110 bytesPruébalo en línea!
EDITAR: guardado 1 byte gracias a Zgarb .
fuente
#ṗuS+omLgpGuarda un byte.Brachylog , 7 bytes
Pruébalo en línea!
Una divertida versión de 9 bytes:
ḋọ{∋∋ṗ}ᶜ¹fuente
Ruby
-rprime, 66 bytesPruébalo en línea!
fuente
Pyth , 15 bytes
Pruébalo aquí!
fuente
Números R +, 92 bytes
Pruébalo en línea!
fuente
J, 20 bytes
Contada a mano jajaja, así que dime si esto está apagado.
¿Alguna sugerencia de golf?
Presentación aburrida: aplanar la tabla de factorización prima y contar primos.
fuente
Pari / GP , 47 bytes
Pruébalo en línea!
fuente
Javascript (ES6), 145 bytes
fuente