Dado un número entero positivo n , los enteros a y b (formando una fracción reducida a / b ) tal que:
Donde p k es el k número primo (con p 1 = 2).
Ejemplos:
1 -> 3, 5
2 -> 12, 25
3 -> 144, 325
4 -> 3456, 8125
5 -> 41472, 99125
15 -> 4506715396450638759507001344, 11179755611058498955501765625
420 -> very long
Se permiten verificaciones primarias probabilísticas, y está bien si su respuesta falla debido a limitaciones en el tipo de entero de su idioma.
El código más corto en bytes gana.
code-golf
arithmetic
orlp
fuente
fuente
3.0
lugar de3
?a
yb
como un tipo racional?Respuestas:
M , 9 bytes
Pruébalo en línea!
Trivialidades
¡Conoce a M!
M es un tenedor de gelatina, dirigido a desafíos matemáticos. La diferencia principal entre Jelly y M es que M usa precisión infinita para todos los cálculos internos, representando los resultados simbólicamente. Una vez que M sea más maduro, Jelly gradualmente se volverá más polivalente y menos orientado a las matemáticas.
M es mucho trabajo en progreso (lleno de errores, y en realidad no es tan diferente de Jelly en este momento), pero funciona de maravilla para este desafío y simplemente no pude resistirme.
Cómo funciona
fuente
ÆN
el único operador específico de M? También MellyMathematica, 32 bytes
Una función sin nombre que toma una entrada entera y devuelve la fracción real.
Esto usa el hecho de que . Luego, el código se juega gracias al hecho de que Mathematica enhebra todas las operaciones aritméticas básicas sobre listas. Entonces, primero creamos una lista , luego recuperamos todos esos números primos y conectamos esa lista a la expresión anterior. Esto nos da una lista de todos los factores. Finalmente, multiplicamos todo junto aplicando a la lista, a la que se puede jugar .
(p2-1)/(p2+1) = 1-2/(p2+1)
{1, 2, ..., n}
Times
1##&
Alternativamente, podemos usar
Array
para el mismo conteo de bytes:fuente
1-2
=1
, ¿verdad?-1
realidad), pero1-2/x ≠ -1/x
. ;)@Range@
±~Array~
Python 2, 106 bytes
La primera y la cuarta línea duelen tanto ... simplemente resultó que usar
Fraction
era mejor que multiplicar por separado y usargcd
, incluso en Python 3.5+ dondegcd
residemath
.Primera generación adaptada de la respuesta de @ xnor aquí , que utiliza el teorema de Wilson.
fuente
Ruby,
1227765 bytesGracias a Sherlock por reducir 10 bytes.
Define una función anónima que toma un número y devuelve a
Rational
.fuente
PARI / GP , 33 bytes
Versión alternativa (46 bytes):
Versión no competitiva que da el resultado de coma flotante (
t_REAL
) (38 bytes):fuente
Jalea ,
1413 bytesPruébalo en línea! Gracias a @Dennis por -1 byte.
fuente
Pyth
2625Pruébelo aquí o ejecute Test Suite .
¡1 byte guardado gracias a Jakube!
Implementación bastante ingenua de las especificaciones. Utiliza el "nuevo" spiffy (no tengo idea de cuándo se agregó esto, pero nunca lo he visto antes)
P<neg>
que devuelve si el valor positivo de un número negativo es primo o no. Algunos de los mapas, etc., probablemente se pueden jugar al golf ...fuente
Julia,
5942 bytesEsta es una función anónima que acepta un número entero y devuelve un
Rational
conBigInt
numerador y denominador.Comenzamos generando la lista de números primos menores que 2 n 2 y seleccionando los primeros n elementos. Esto funciona porque el n º Prime es siempre menor que n 2 para todos n > 1. ( Ver aquí ).
Para cada p de los n primos seleccionados, elevamos al cuadrado p usando elementwise power (
.^2
), y construimos el racional 2 / ( p + 1), donde 2 se convierte primero en aBigInt
para garantizar una precisión suficiente. Restamos esto de 1, tomamos el producto del conjunto resultante de racionales y devolvemos el racional resultante.Ejemplo de uso:
¡Ahorrado 17 gracias a Sp3000!
fuente
Convexo, 28 bytes
Convex es un nuevo lenguaje que estoy desarrollando que se basa en gran medida en CJam y Golfscript. El intérprete y el IDE se pueden encontrar aquí . La entrada es un número entero en los argumentos de la línea de comando. Los índices están basados en uno. Utiliza la codificación CP-1252.
Puede o no considerar que esta respuesta es competitiva ya que estaba trabajando en algunas características que utiliza este programa antes de que se publicara el desafío, pero el compromiso se realizó una vez que vi que este desafío desaparecía.
fuente
MATL , 18 bytes
Pruébalo en línea!
Falla para entradas grandes porque solo los enteros hasta
2^52
se pueden representar con precisión internamente.Explicación
fuente
Mathematica, 45 bytes
Primes? Fracciones? Mathematica
fuente
Haskell, 53 bytes
Función anónima, 53 caracteres:
Pruébelo aquí (nota: en GHCi estándar, primero debe asegurarse
Data.Ratio
yData.List
se importan):La indexación de la lista de Haskell
!!
se basa en 0.(___!!)
es una sección de operador , que forma una función anónima para que(xs !!) n == xs !! n
.Son cuatro bytes menos para generar la secuencia completa:
fuente
En serio, 25 bytes
Salidas
a\nb
(\n
es una nueva línea). Las entradas grandes tardarán mucho tiempo (y podrían fallar debido a la falta de memoria) porque la generación principal es bastante lenta.Pruébalo en línea!
Explicación:
fuente