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)?64
el 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é que8640
era 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
Cases
resulta 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
€pO
despué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?
fuente
Gaia , 6 bytes
Pruébalo en línea!
ḋ
calcula la factorización prima, como pares [primo, exponente] ._
aplana la lista.u
elimina 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
mp
da0
o1
puede 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+omLgp
Guarda 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