Si alguna vez aprendió sobre números primos en la clase de matemáticas, probablemente haya tenido que, en un momento, determinar si un número es primo. Probablemente te hayas equivocado mientras todavía los estabas aprendiendo, por ejemplo, confundiendo 39 con un primo. Bueno, no se preocupe, ya que 39 es un semiprime, es decir, que es el producto de dos números primos.
Del mismo modo, podemos definir un k- primo casi como el producto de k números primos. Por ejemplo, 40 es el 4to 4-casi primo; 40 = 5 * 2 * 2 * 2, el producto de 4 factores.
Su tarea es escribir un programa / función que acepta dos enteros n y k como entrada y de salida / retorno del n º k -casi número primo. Este es un código de golf, por lo que gana el programa más corto en bytes.
Casos de prueba
n, k => output
n, 1 => the nth prime number
1, 1 => 2
3, 1 => 5
1, 2 => 4
3, 2 => 9
5, 3 => 27
Diverso
Debe generar los primos usted mismo por cualquier medio que no sea una forma cerrada simple, si existe una forma cerrada.
f
en términos def[n,1]
sea correcta, ya que las listas de casi primos contienen números impares (por ejemplo, los dos últimos ejemplos, que no se pueden expresar como el producto de una potencia de dos y un primo). (Y también dice esof[n,1] == 2*f[n,1]
.)Respuestas:
Pyth, 9 bytes
Explicación
Pruébalo aquí!
O prueba una suite de prueba!
fuente
Brachylog , 9 bytes
Vencer a @sundar usando la mitad de bytes
Explicación
Pruébalo en línea!
fuente
Pyke (commit 29), 8 bytes (no competitivo)
Explicación:
fuente
Julia,
84785957 bytesEsta es una función recursiva que acepta dos enteros y devuelve un entero. El enfoque aquí es verificar la suma de los exponentes en la factorización prima contra
k
.Sin golf:
fuente
Jalea, 9 bytes
Pruébalo en línea!
Cómo funciona
fuente
Brachylog , 18 bytes
Pruébalo en línea!
fuente
Mathematica,
5651 bytesAdvertencia: esto es teórico. No ejecute valores> 4. Reemplace 2 ^ ## con una expresión más eficiente.
fuente
n=1
.PrimeOmega[1]
evalúa como0
,&&#>1
es redundante.Mathematica,
5349 bytesGenera una lista de enteros basada en un límite superior suelto.
PrimeOmega
los recuentos de los factores primos con multiplicidades, la k -casi primeCases
se toman de la lista, y la n se devuelve º miembro de ese subconjunto.fuente
2^Sequence[1,2]
ver por qué falla este último.Haskell, 88 bytes
Probablemente se pueda jugar mucho más al golf, ya que todavía soy un novato en Haskell. La función
q
devuelve el número de factores de su argumento, y lof
usa para obtener elnth
elemento de una lista hecha de todos los números que tienenk
factores.fuente
MATL, 14 bytes
Pruébalo en MATL Online
fuente
Python 3, 100 bytes
Esta es una función de fuerza bruta muy simple. Comprueba cada número a partir de 2 con
sympy
lafactorint
función de 's hasta que ha encontradon
k
casi primos, en cuyo punto, la función devuelve eln
th de estos.Sin golf:
Lo uso
sum(factorint(a).values())
porquefactorint
devuelve un diccionario defactor: exponent
pares. Tomar los valores del diccionario (los exponentes) y sumarlos me dice cuántos factores primos hay y, por lo tanto, cuál esk
estek
primo casi.fuente
Python 2 , 76 bytes
Pruébalo en línea!
fuente