La solución obvia sería simplemente imprimirlos como una cadena, pero ¿es posible escribir un código más corto?
Requisitos:
- No se debe procesar ninguna entrada, y la salida debe ser en forma de
2 3 5 7 11 13 ...
etc. - No se utilizan palabras reservadas en el idioma
- El lenguaje debería permitir al menos una programación estructurada y tener palabras reservadas (de lo contrario, el punto 2 sería discutible).
primero tenía en mente exclusivamente C / C ++, pero extendí la pregunta mientras intentaba evitar las trampas
Respuestas:
C, 60 caracteres
La limitación "sin palabras clave" no importa aquí. Estoy bastante seguro de que mejorarlo, si es posible, no se hará agregando palabras clave.
Versión alternativa:
el resultado no es tan bueno, pero me gusta el
printf
abuso.El truco en ambas soluciones es fusionar dos bucles (implementados por recursividad) en uno.
n
es el próximo potencial primo,m
el próximo divisor potencial.En cada llamada recursiva, incrementamos
n
(mientras establecemosm
su valor anterior) o disminuimosm
.fuente
Python, 108 caracteres
Python no fue hecho para este desafío. Quieres
print
? Eso es reservado Bueno, ¿qué tal si usamosstdout
? Bueno, eso va a costar unimport
... lo has adivinado, reservado. Bueno ... estoy en Unix, así que puedo abrir el descriptor de archivo 1, que resulta ser stdout. ¡Cortar a tajos!¿Hombre e iteración? Nada más
eval
. Sin bucles, por supuesto, pero ni siquiera podemos definir una función condef
olambda
. Y para agregar insulto a la lesión, ¡ni siquiera podemos usar la comprensión de la lista! Siempre busco una excusa para usar cosas comomap(p.__mod__,...)
en el golf de código ... la comprensión siempre es mejor. Hasta ahora, eso es.Ahora, puede quejarse de que
exec
es una palabra clave, a pesar de que no usé la palabra clave (ni siquieraeval
unaexec
). Bueno, aquí hay una solución de 117 caracteres que no usa'exec'
.fuente
__import__
, pero eso va a costar caracteresJavaScript (80 caracteres)
Ejecutar en la consola de su navegador web.
Usó un tamiz de primera calidad, que resultó estar muy condensado.
fuente
C, 183 caracteres
Bueno, aquí hay un primer intento rápido. Creo que esto debería satisfacer los requisitos. Estoy usando una división de prueba simple para encontrar los primos y un bucle desenrollado construido usando el preprocesador para iterarlo hasta que haya encontrado suficientes. Se ha ajustado el número de repeticiones para que se impriman exactamente 128 primos.
fuente
C, 87 caracteres
(Traté de escribirlo en un estilo más funcional, pero mi incapacidad para usar
return
eso mató ese plan).fuente
C, 134 caracteres
Aquí hay una solución alternativa que intenta evitar el uso de palabras tanto como sea posible, reservado o de otra manera:
Todo lo que usa es
printf
ymain
con un solo argumento.fuente
Mathematica 50 caracteres
No estoy seguro de cómo interpretar las "palabras reservadas" para Mathematica, pero quiero jugar, así que lo interpretaré sin las funciones integradas para generar números primos o pruebas de primalidad.
fuente
Haskell, 72 caracteres
Es cierto que evitar palabras clave no es demasiado difícil en Haskell.
fuente
K (ngn / k) , 31 bytes
Pruébalo en línea!
fuente