A solução óbvia seria imprimi-los apenas como uma string, mas é possível escrever um código mais curto?
Requisitos:
- Nenhuma entrada deve ser processada e a saída deve estar na forma de
2 3 5 7 11 13 ...
etc. - Nenhuma palavra reservada no idioma é usada
- A linguagem deve pelo menos permitir programação estruturada e ter palavras reservadas (caso contrário, o ponto 2 seria discutível).
primeiro, eu tinha exclusivamente em mente C / C ++, mas estendi a pergunta enquanto tentava evitar trapaças
Respostas:
C, 60 caracteres
A limitação "sem palavras-chave" não importa aqui. Tenho certeza de que melhorá-lo, se possível, não será feito adicionando palavras-chave.
Versão alternativa:
a saída não é tão boa, mas eu gosto do
printf
abuso.O truque em ambas as soluções é mesclar dois loops (implementados por recursão) em um.
n
é o próximo primo em potencial,m
o próximo divisor em potencial.Em cada chamada recursiva, incrementamos
n
(enquanto definimosm
seu valor anterior) ou diminuímosm
.fonte
Python, 108 caracteres
Python não foi criado para esse desafio. Quer
print
? Isso é reservado. Bem, que tal usarmosstdout
? Bem, isso vai custar umimport
... você adivinhou, reservado. Bem ... eu estou no unix, então posso abrir o descritor de arquivo 1, que é stdout. Hack!Cara, e iteração? Nada além disso
eval
. Sem loops, é claro, mas não podemos nem definir uma função comdef
oulambda
. E para adicionar insulto à lesão, não podemos nem usar a compreensão da lista! Eu sempre procuro uma desculpa para usar coisas comomap(p.__mod__,...)
no código golf ... a compreensão é sempre melhor. Até agora, é isso.Agora, você pode reclamar que
exec
é uma palavra-chave, mesmo que eu não tenha usado a palavra-chave (eu nem useieval
umaexec
). Bem, aqui está uma solução de 117 caracteres que não usa'exec'
.fonte
__import__
, mas isso vai personagens custoJavaScript (80 caracteres)
Execute no console do seu navegador da web.
Usou uma peneira primária, que acabou sendo muito condensada.
fonte
C, 183 caracteres
Bem, aqui está uma primeira tentativa rápida. Eu acredito que isso deve satisfazer os requisitos. Estou usando a divisão de teste simples para encontrar os primos e um loop desenrolado construído usando o pré-processador para iterá-lo até encontrar o suficiente deles. O número de repetições foi ajustado para que exatamente 128 números primos sejam impressos.
fonte
C, 87 caracteres
(Tentei escrever em um estilo mais funcional, mas minha incapacidade de usar
return
meio que acabou com esse plano.)fonte
C, 134 caracteres
Aqui está uma solução alternativa que tenta evitar o uso de palavras, tanto quanto possível, reservada ou não:
Tudo o que ele usa é
printf
emain
com um único argumento.fonte
Mathematica 50 caracteres
Não tenho certeza de como interpretar "palavras reservadas" para o Mathematica, mas quero jogar, então entendo que isso significa passar sem funções internas para gerar números primos ou testar a primalidade.
fonte
Haskell, 72 caracteres
É certo que evitar palavras-chave não é muito difícil em Haskell.
fonte
K (ngn / k) , 31 bytes
Experimente online!
fonte