Un primo es débil si el otro primo más cercano es más pequeño que él. Si hay un empate, el prime no es débil.
Por ejemplo, 73 es un primo débil porque 71 es primo pero 75 es compuesto.
Tarea
Escriba un código de computadora que cuando se le dé un primo mayor que 2 como entrada determinará si es un primo débil. Este es un problema de decisión estándar , por lo que debe generar dos valores únicos para cada uno de los dos casos (por ejemplo, weak
y not weak
).
Este es el código de golf, por lo que se aplican las reglas estándar para la etiqueta.
OEIS
Aquí están los primeros 47 primos débiles:
3, 7, 13, 19, 23, 31, 43, 47, 61, 73, 83, 89, 103, 109, 113, 131, 139, 151, 167, 181, 193, 199, 229, 233, 241, 271, 283, 293, 313, 317, 337, 349, 353, 359, 383, 389, 401, 409, 421, 433, 443, 449, 463, 467, 491, 503, 509, 523, 547, 571, 577, 601, 619, 643, 647
Aquí está el OEIS para números primos débiles (debería regresar weak
) OEIS A051635
Aquí está el OEIS para primos balanceados (debería regresar not weak
) OEIS A006562
Aquí está el OEIS para números primos fuertes (debería regresar not weak
) OEIS A051634
fuente
not weak
ostrong
?Respuestas:
Jalea , 7 bytes
Pruébalo en línea!
Explicación
Como beneficio adicional, el cambio
>
a=
o<
cheques por números primos equilibrados y fuertes, respectivamente.fuente
>
, no?Mathematica, 24 bytes
El
NextPrime
incorporado puede ser (ab?) Usado para calcular el primo anterior al alimentarlo con un argumento negativo.fuente
Jalea , 9 bytes
Devuelve
1
para débil y0
para no débil o equilibrado (devuelve1
para una entrada de2
)Pruébalo en línea!
¿Cómo?
fuente
IIṠ⁼1
deII>0
aI<\
) ... el suyo es mucho aunque diferentes. Parece que piensas diferente a mí ... EDITAR: Pietu1998 regresó!PHP , 69 bytes
imprime uno para cebado débil y nada para cebado no débil
Pruébalo en línea!
fuente
Octava,
9384 bytes¡Gracias a @LuisMendo y @ rahnema1 por guardar bytes!
Pruébalo en línea!
fuente
i-=1
etc.? Además,end
no es necesario en la función; puedes moverlo al pie de páginaMáximo, 42 bytes
Pruébalo en línea!
fuente
MATL , 13 bytes
Esto sale
1
si es débil, de lo0
contrario.Pruébalo en línea!
Explicación
fuente
GNU APL 1.2, 78 bytes
∇f N
declara una función que toma un argumento.(~R∊R∘.×R)/R←1↓⍳N×2
da una lista de todos los números primos del 2 al doble del argumento. Supongo que el próximo primo es menos del doble del original. Si esto no es cierto,N*2
da N al cuadrado y toma el mismo número de bytes (es de esperar que sea lo suficientemente grande como para exceder el próximo número primo). (Consulte la explicación de Wikipedia sobre cómo funciona el hallazgo principal)X←(R←(...))⍳N
asigna esa lista al vectorR
(sobrescribiendo su contenido anterior), encuentra el índice del primo originalN
en esa lista y luego le asigna ese índiceX
.|R[X-1]-N
calcula la diferencia entre el primo anterior (porqueR
contiene los primos, elX-1
elemento th es el primo antesN
)N
y luego toma el valor absoluto (APL funciona de derecha a izquierda).|R[X+1]-N
hace lo mismo, pero para el próximo prime.(|R[X-1]-N)<|R[X+1]-N
imprime 1 si el primo anterior está más cerca del original que el próximo y 0 en caso contrario Los paréntesis son necesarios para la precedencia.∇
termina la funciónfuente
Jalea , 9 bytes
Pruébalo en línea!
fuente
Pyth, 15 bytes
Pruébalo aquí
Utiliza el algoritmo de Pietu1998.
fuente
Perl 6 , 41 bytes
Pruébalo en línea!
$_
es el argumento de la función La función de mapeo-> \n { $_ + n, * + n ... &is-prime }
toma un númeron
y devuelve una secuencia de números$_ + n, $_ + 2*n, ...
que termina cuando alcanza un número primo. Mapeando esta función sobre los dos números1
y-1
produce una secuencia de dos secuencias; el primero comienza con$_ + 1
y termina con el primer número primo mayor que$_
, y el segundo comienza con$_ - 1
y termina con el primer número primo menor que$_
.[>]
reduce esta lista de dos elementos con el operador mayor que, devolviendo verdadero si la primera secuencia es mayor (es decir, más larga) que la segunda.fuente
Python 2.7 - 120 bytes
Dado que Python no tiene una función primordial incorporada, podemos usar el teorema de Wilson para obtener un buen corrector primo corto. ¡El teorema de Wilson establece que un número es primo si y solo si (n-1)! es congruente con -1 mod (n). Por lo tanto, la función i devolverá 1 si el número es primo y 0 si no lo es. Después de eso, la función f determinará si el primer primo de ese número ocurre primero cuando se incrementa hacia abajo en lugar de hacia arriba. Si ninguno de los números incrementados es primo, solo se llama de forma recursiva nuevamente.
Algunos ejemplos de E / S
fuente
Python 2 ,
1221081039492 bytesPruébalo en línea!
Usa la idea de Pietu ... y luego ahorró 28 bytes jugando golf a los iteradores de la lista principal más cortos; luego 2 más reemplazando
-3*n>0
con>3*n
(¡oh!)fuente
Regex (la mayoría de los sabores), 47 bytes
Pruébalo en línea!
Toma entrada en unario. Emite una coincidencia para primos débiles, no coincide para primos no débiles. Funciona en ECMAScript, Perl, PCRE, Python, Ruby.
Explicación:
Sea N la entrada, A el primo más cercano <N, y B el primo más cercano> N. La principal dificultad de un enfoque de expresiones regulares para este desafío es que no podemos representar números mayores que la entrada, como B. En cambio, nosotros encuentre el b más pequeño de modo que 2b + 1 sea primo y 2b + 1> N, lo que garantiza que 2b + 1 = B.
Luego, tenga en cuenta que en realidad no necesitamos encontrar A. Siempre que cualquier primo <N esté más cerca de N que B, N es un primo débil.
fuente
Octava, 53 bytes
Pruébalo en línea!
fuente
JavaScript ES6,
162154 bytesAhorro de 8 bytes basado en el truco de Jörg Hülsermann "no imprimir nada en un caso". No es necesario
?"Y":"N"
despuésone<two
fuente
05AB1E , 17 bytes
Pruébalo en línea!
Utiliza el algoritmo de Pietu1998.
fuente
Python 3 , 149 bytes
Pruébalo en línea!
Estoy usando una función de generación principal (línea superior) tomada de esta antigua respuesta de intercambio de pila.
fuente
JavaScript, 98 bytes
Menos golpeado
Tenga en cuenta que el código de prueba no verifica que la entrada "primo" sea realmente un primo.
fuente
braingasm ,
2322 bytesImprime
1
para primos débiles y0
para no débiles.Tutorial:
fuente
Julia 0.6, 64 bytes
fuente
Python 2 , 81 bytes
Pruébalo en línea!
Utiliza el teorema de Wilson para la prueba de primalidad.
fuente