Introducción
Invertir y agregar es tan simple como parece, toma n
y agregarlo a sus dígitos en orden inverso. (por ejemplo, 234 + 432 = 666).
Si aplica este proceso repetidamente, algunos números finalmente alcanzarán un número primo, y algunos nunca llegarán a un primo.
Ejemplo
Actualmente tengo
11431 rep.
11431 is not prime
11431 + 13411 = 24842 which is not prime
24842 + 24842 = 49684 which is not prime
49684 + 48694 = 98378 which is not prime
98378 + 87389 = 185767 which is prime!
Este número alcanza un primer
En contraste, cualquier múltiplo de 3 nunca alcanzará un primo, esto se debe a que todos los múltiplos de 3 tienen una suma de dígitos que es un múltiplo de 3 y viceversa. Por lo tanto, invertir y agregar un múltiplo de 3 siempre dará como resultado un nuevo múltiplo de 3 y, por lo tanto, nunca un primo.
Tarea
Toma un entero positivo n
y determine si invertir y sumar repetidamente resultará en un número primo. Salida de un valor verdadero o falso. O la verdad para alcanza un valor primo y falso para no, o al revés, ambas son aceptables.
Se considerará que los números primos alcanzan un número primo en cero iteraciones.
Esto es código golf así que trate de hacer su código lo más corto posible.
Casos de prueba
Verdadero para alcanza una prima falsa para nunca alcanza una prima
11 -> True
11431 -> True
13201 -> True
13360 -> True
13450 -> True
1019410 -> True
1019510 -> True
22 -> False
1431 -> False
15621 -> False
14641 -> False
Insinuación
Mientras escribía este desafío descubrí un truco genial que hace que este problema sea mucho más fácil. No es imposible sin este truco y tampoco es trivial, pero ayuda. Me divertí mucho descubriendo esto, así que lo dejaré en un spoiler a continuación.
Repetir y agregar repetidamente siempre alcanzará un múltiplo de 11 en 6 iteraciones o menos. Si no alcanza un primo antes de alcanzar un múltiplo de 11, nunca alcanzará un primo.
fuente
Respuestas:
Ruby ,
84 79 7774 bytesPruébalo en línea!
fuente
Haskell , 65 bytes
f
toma unInteger
y devuelve unBool
.True
significa que alcanza una prima.Pruébalo en línea!
Desafortunadamente, la prueba principal corta pero ineficiente significa que los
True
casos de prueba del OP que no sean11
demasiado grandes para terminar. Pero, por ejemplo, 11432 es unTrue
caso que termina.También puede probar este 3 bytes más largo, para lo cual TIO puede finalizar todos los
True
casos de prueba:Pruébalo en línea!
Las pruebas principales de ambas versiones se rompen en 1, pero sucede que de todos modos llega a un número primo (2).
De lo contrario, noté lo mismo que GB en el spoiler de la presentación de Ruby:
fuente
Python 2,
123110bytes¡Ahorró 13 bytes gracias a Ørjan Johansen y Wheat Wizard !
Devuelve 1 si alcanza un primo, 0 si no lo hace. Pruébalo en línea!
fuente
Python 2 ,
787069 bytesPruébalo en línea!
Explicación
Este programa se basa en el hecho de que
Este programa es un lambda recursivo con comparativas lógicas en circuito. Primero verifica si n es primo.
Si esto es cierto, volveremos cierto.
Si es falso, verificamos si es un múltiplo de 11.
Si es falso, devolvemos falso; de lo contrario, devolvemos el resultado de
f
la próxima iteración.fuente
Jalea , 11 bytes
Pruébalo en línea!
fuente
S
podría ser unaT
.RD$+$
también puede ser+RD$$
oRD+<newline>Ç
(todas las modificaciones triviales)S
porque tiene menos posibilidades de mostrar algo> 1. No existeRD
, soloṚḌ
, y elegíṚḌ$+$
para poder organizarlo mejor.S
; Debería haber elegido esoT
, pero eso es principalmente para el interés de todos los demás.05AB1E ,
1413 bytesEDITAR : se guardó un byte porque la entrada se reutiliza si no hay suficientes elementos en la pila
Pruébalo en línea!
Utiliza la pista en la pregunta
Cómo funciona
fuente
MATLAB,
8881 bytesfuente
JavaScript (ES6), 73 bytes
Devoluciones
0
otrue
.Comentado
Esto se basa en la fórmula de spoiler mágico descrita por Wheat Wizard.
Casos de prueba
He eliminado las dos entradas más grandes del fragmento, ya que tardan unos segundos en completarse. (Pero también funcionan).
Mostrar fragmento de código
fuente
Mathematica, 45 bytes
fuente
Servidor SQL de Microsoft,
826786 * bytes* He recordado sobre la función IIF que se introdujo en Microsoft Sql Server 2012
Compruébalo en línea
El formato más ordenado
fuente
/*true*/
y los/*false*/
comentarios?Jalea , 9 bytes
Pruébalo en línea!
Cómo funciona
fuente
PHP 114 bytes
Versión más legible:
Pruébalo en línea!
Usé esto para contar bytes.
fuente