Escriba un programa que pruebe la primalidad de un número específico y dé la salida como un valor booleano (True es primo). Su prueba principal puede (pero no tiene que ser) válida para el número 1.
Aquí está el truco: su propio programa tiene que sumar un número primo. Convierta todos los caracteres (incluidos los espacios) a su valor Unicode / ASCII ( tabla ). Luego, sume todos esos números para obtener la suma de su programa.
Por ejemplo, tome este programa no tan bueno que escribí en Python 3.3:
q=None
y=int(input())
for x in range(2,int(y**0.5)+1):
if y%x==0:
q=False
if not q:
q=True
print(q)
Si convierte todos los caracteres a su valor Unicode / ASCII correspondiente, obtendrá:
113 61 78 111 110 101 10 121 61 105 110 116 40 105 110 112 117 116 40 41 41 10 102 111 114 32 120 32 105 110 32 114 97 110 103 101 40 50 44 105 110 116 40 121 42 42 48 46 53 41 43 49 41 58 10 32 32 32 32 105 102 32 121 37 120 61 61 48 58 10 32 32 32 32 32 32 32 32 113 61 70 97 108 115 101 10 105 102 32 110 111 116 32 113 58 10 32 32 32 32 113 61 84 114 117 101 10 112 114 105 110 116 40 113 41
Luego puede encontrar la suma de esos números manualmente o con su propio programa. Este programa específico suma 8293, que es un número primo.
Por supuesto, este es Code Golf, por lo que cuanto más pequeño pueda hacer su programa, mejor. Como lo señalaron otros usuarios, este programa no es muy deportivo.
Algunas reglas:
Las entradas válidas incluyen STDIN y mensajes (sin funciones, es solo una forma de agregar código adicional gratuito). Se permiten espacios, pero solo si son cruciales para la funcionalidad de su programa. La salida debe ser una salida, no solo almacenada en una variable o devuelta (use print, STDOUT, etc.)
Las banderas se pueden usar y se deben contar literalmente, no expandidas. No se permiten comentarios. En cuanto a los caracteres no ASCII, deben asignarse al valor en su codificación respectiva.
Asegúrese de enumerar el tamaño de su programa y la suma del programa. Probaré para asegurarme de que los programas sean válidos.
¡Buena suerte!
Aquí hay un fragmento para contar la suma de su programa y verificar si es primo:
fuente

Respuestas:
¡Hola Mundo! 13 bytes
1193fuente
Rubí, suma 3373, 37 bytes
fuente
Microscript II, 2 bytes (suma 137)
Microscript II, 4 bytes (suma 353)
De hecho, estoy bastante sorprendido de que ambos hayan tenido sumas de bytes primos.
fuente
Japt , 2 bytes,
191U:85j:106Pruébalo en línea!
fuente
Pyth, 2 bytes,
127Pruébalo en línea
Salidas
1para primos,0para no primos./Tiene punto de código47.PTiene punto de código80.Cómo funciona:
fuente
Haskell, 52 bytes, 4421
Teorema de Wilson.
fuente
::IO Intrealidad no debería ser necesario a menos que ese es el camino más corto se puede obtener una suma de primera.Python 2, 50 bytes,
4201Funciona para 1. La salida es positiva si es primo, o cero si no.
Pruébalo en línea
Python 2, 44 bytes,
3701No funciona para 1. Emite un booleano.
Pruébalo en línea
fuente
JavaScript (ES6), 47 bytes,
3541Esto se basa en gran medida en la función de prueba de primalidad de ETHproductions , que se puede encontrar aquí .
fuente
05AB1E , 2 bytes,
173Explicación:
Pruébalo en línea!
fuente
PHP, 38 bytes, suma 2791
Dato curioso: con en
$hlugar de$c, la suma sería2801(también un primo), y su representación binaria101011110001leída como decimal también es un número primo.toma el argumento de la línea de comando, imprime
1o una cadena vacía. Corre con-r.Código tomado de mi propia función principal (mira la publicación original si puedes).
fuente
R, 27
32bytes, suma 22432609Guardado 5 bytes gracias a @rturnbull
Esto hace uso de la función isprime de la biblioteca gmp.
fuente
cat(!!gmp::isprime(scan()))es 5 bytes más corto y suma2243, también primo.Python 2, 44 bytes, suma de bytes 3109
Esta es la implementación de 44 bytes de xnor con los nombres de variables de menor valor que producen una suma de bytes primos.
Imprime
1si es primo y0si no.fuente
Gelatina 6 bytes , suma de bytes 691
imprime
1si es primo y0si no.TryItOnline!
Los bytes en hexadecimal son
93 0D D5 2C CD 45(vea la página de códigos ), o en decimal son los147 13 213 44 205 69que suman 691, que es primo.¿Cómo?
La
Æḍfuncionalidad es tal que los primos y sus negaciones devuelven uno, mientras que otros enteros no (los compuestos y sus negaciones devuelven números mayores que uno, uno y menos uno devuelven cero y cero, curiosamente, menos uno).La
Ṡfuncionalidad es tal que los enteros negativos devuelven menos uno, cero devuelve cero y los enteros positivos devuelven uno.Por lo tanto, las dos funciones solo devuelven el mismo valor para los primos.
Tenga en cuenta que el programa de 3 bytes
ƓÆPque prueba directamente si la entrada de STDIN es primo desafortunadamente no es un programa de suma prima (240).Las pruebas de igualdad utilizando
=(iguales),e(existe en) o⁼(no iguales a vectorización) para 5 bytes tampoco producen programas de suma prima.Alternativa (quizás no aceptable) 4 bytes, suma 571
Si las restricciones de E / S todavía permiten programas completos que toman un argumento.
... usando el mismo principio que el anterior, donde
⁼es la igualdad no vectorizante (el aspecto no vectorizador no tiene ningún efecto ya que no hay nada que vectorizar de todos modos). Los valores hexadecimales son0D D5 8C CDlos que están13 213 140 205en decimal, que suma a 571, un número primo.Nuevamente, tenga en cuenta que el programa de 2 bytes
ÆPno tiene una suma prima (93).fuente
ƓÆPG(311) yÆPF(163) deberían estar bien, creo?ƓÆḍ,ṠE, el valor es16183, ¡que coincidentemente es primo!ƓÆPGesté bien. También he preguntado si un programa que toma información en lugar de usar STDIN es aceptable.ÆP¥son 3 bytes y 97.CJam , 4 bytes, suma de bytes 439
Utiliza la prueba de primalidad incorporada.
Pruébalo en línea!
Solución alternativa, 4 bytes, suma 461
fuente
Mathematica, 21 bytes,
1997Input[]lee una línea de entrada (de STDIN si no se utiliza ningún extremo frontal, a través de un cuadro de diálogo si se utiliza el extremo frontal Mathematica),Print@*PrimeQes la composición (@*) de laPrintyPrimeQfunciones, y@es la notación función de prefijo.fuente
Perl 6 ,
2422 bytes,1949Se requieren los tres caracteres de espacio en blanco.
(Sin embargo, a Perl 6 no le importa qué tipo de espacio en blanco son, así que elegí una nueva línea en lugar del espacio más utilizado para la segunda ...)
fuente
Pyth, 4 bytes,
367Pruébalo aquí!
fuente
Pip , 8 bytes,
511Escribí un corrector principal, y la suma fue primo. Conveniente. Verifique las entradas 1-30: ¡ Pruébelo en línea!
Explicación
fuente
Pari / GP , 23 bytes,
2111Pruébalo en línea!
fuente
J, 18 bytes,
1103No lejos de ser óptimo, lo menos que pude jugar un test de primalidad de programa completo fue 17 Bytes:
echo(p:[:".1!:1)1que desafortunadamente suma 1133 = 11 * 103.Desafortunadamente, no puedo entender cómo hacer que la entrada del teclado funcione en TIO, por lo que todavía no hay un enlace.
Explicación:
Validando el programa:
fuente
C (gcc) ,
6260 bytes, 4583Muy claro. Salidas * si es primo, de lo contrario, genera un espacio. No funciona para 1.
-2 gracias a l4m2
Pruébalo en línea!
fuente
n;main(i){for(scanf("%d",&n);++i<n;)n=n%i?n:0;puts("*"+!n);}Es posible que deba cambiar el nombre de alguna variable para la suma primaAWK , 36 bytes, suma de bytes 2239
Pruébalo en línea!
Salidas
0si no es prime y1para prime. Definitivamente no es el código más eficiente, ya que verifica cada número entero mayor que1para ver si divide la entrada.fuente
Excel (57 bytes, suma de código 3547)
Excel realmente no tiene una "entrada" como tal, pero esta fórmula espera que el número que se probará esté en A1 y salga a cualquier celda en la que lo coloque. Es una fórmula de matriz, así que presione Ctrl-Shift-Enter para ingresar en lugar de entrar.
fuente
Java 8, 114 bytes, Prime 10037
Pruébalo en línea.
Explicación:
Lo he usado en
xlugar deihacer que la suma Unicode sea primo. Verifique la suma unicode aquí.fuente
Gelatina , 4 bytes, Σ = 239
Pruébalo en línea!
Prueba: ¡ Pruébelo en línea! (tome los índices basados en 1 de los caracteres del programa de la página de códigos de Jelly, decremente para hacerlos basados en 0, sume y luego verifique si el resultado es primo).
fuente
SmileBASIC, 42 bytes,
2687Emite 1 (verdadero) si el número es primo, de lo contrario 0 (falso).
Los nombres de las variables no solo se eligieron para hacer que el programa sea primo.
Nes el n umber a prueba,Des la d iVisor, yPmantiene un seguimiento de si N es p escarcha.fuente
Maravilla , 7 bytes,
537Probablemente hay una mejor manera ...
fuente
Óxido, 190 bytes, puntaje 15013
Sin golf
No funciona para 1
fuente
Stax , 349
Ejecutar y depurarlo
fuente
|pQfunciona para una puntuación de 317. Si se permite el intercambio de verdad / falsedad,|p!funciona igual para 269.Susurros v2 , 33 bytes
Pruébalo en línea!
44381Cómo funciona
Esto se muestra en el orden en que se ejecuta:
fuente