Escreva um programa que teste a primalidade de um número especificado e dê a saída como um valor booleano (True é primo). Seu teste principal pode (mas não precisa) ser válido para o número 1.
Aqui está o problema: seu próprio programa deve somar um número primo. Converta todos os caracteres (incluindo espaços) em seu valor Unicode / ASCII ( tabela ). Em seguida, adicione todos esses números para obter a soma do seu programa.
Por exemplo, considere este programa não tão bom que escrevi no 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)
Se você converter todos os caracteres para o valor Unicode / ASCII correspondente, obterá:
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
Você pode encontrar a soma desses números manualmente ou com seu próprio programa. Este programa específico é 8293, que é um número primo.
Obviamente, esse é o Code Golf; portanto, quanto menor você puder fazer seu programa, melhor. Como apontado por outros usuários, este programa não é muito divertido.
Algumas regras:
Entradas válidas incluem STDIN e prompts (sem funções, é apenas uma maneira de adicionar código extra gratuito). Os espaços são permitidos, mas somente se forem cruciais para a funcionalidade do seu programa. A saída deve ser uma saída, não apenas armazenada em uma variável ou retornada (use print, STDOUT etc.)
Os sinalizadores podem ser usados e devem ser contados literalmente, não expandidos. Comentários não são permitidos. Quanto aos caracteres não ASCII, eles devem ser atribuídos ao valor em sua respectiva codificação.
Certifique-se de listar o tamanho do seu programa e a soma do programa. Vou testar para garantir que os programas sejam válidos.
Boa sorte!
Aqui está um trecho para contar a soma do seu programa e verificar se ele é primo:
fonte
Respostas:
Olá Mundo! , 13 bytes,
1193
fonte
Ruby, soma 3373, 37 bytes
fonte
Microscript II, 2 bytes (soma 137)
Microscript II, 4 bytes (soma 353)
Estou realmente surpreso que esses dois acabem tendo somas de bytes principais.
fonte
Japt , 2 bytes,
191
U
:85
j
:106
Experimente online!
fonte
Pyth, 2 bytes,
127
Experimente online
Saídas
1
para números primos,0
para não primos./
tem ponto de código47
.P
tem ponto de código80
.Como funciona:
fonte
Haskell, 52 bytes, 4421
Teorema de Wilson.
fonte
::IO Int
realmente não deve ser necessário a menos que esse é o caminho mais curto você pode obter uma soma prime.Python 2, 50 bytes,
4201
Funciona para 1. A saída é positiva se for prime ou zero se não.
Experimente online
Python 2, 44 bytes,
3701
Não funciona para 1. Produz um booleano.
Experimente online
fonte
JavaScript (ES6), 47 bytes,
3541
Isso se baseia fortemente na função de teste de primalidade da ETHproductions , que pode ser encontrada aqui .
fonte
05AB1E , 2 bytes,
173
Explicação:
Experimente online!
fonte
PHP, 38 bytes, soma 2791
Curiosidade: em
$h
vez de$c
, a soma seria2801
(também um primo) e sua representação binária101011110001
lida como decimal também é um número primo.aceita argumento de linha de comando, imprime
1
ou string vazia. Corra com-r
.Código retirado da minha própria função principal (veja a postagem original, se puder).
fonte
R, 27
32bytes, soma 22432609Guardado 5 bytes graças a @rturnbull
Isso faz uso da função isprime da biblioteca gmp.
fonte
cat(!!gmp::isprime(scan()))
é 5 bytes mais curto e soma2243
também, principal.Python 2, 44 bytes, soma de bytes 3109
Esta é a implementação de 44 bytes do xnor com os nomes de variáveis com menor valor que produzem uma soma de bytes principais.
Imprime
1
se for prime e0
se não for.fonte
Geléia 6 bytes , soma de bytes 691
imprime
1
se prime e0
se não estiver.TryItOnline!
Os bytes em hexadecimal são
93 0D D5 2C CD 45
(consulte a página de códigos ) ou em decimal são147 13 213 44 205 69
soma de 691, o que é primo.Quão?
A
Æḍ
funcionalidade é tal que primos e suas negações retornam um enquanto outros inteiros não retornam (compostos e suas negações retornam números maiores que um, um e menos um retornam retornos zero e zero, curiosamente, menos um).A
Ṡ
funcionalidade é tal que números inteiros negativos retornam menos um, zero retorna zero e números positivos positivos retornam um.Assim, as duas funções retornam apenas o mesmo valor para os números primos.
Observe que o programa de 3 bytes
ƓÆP
que testa diretamente se a entrada do STDIN é primária, infelizmente, não é um programa de soma primária (240).Testar a igualdade usando
=
(iguais),e
(existe em) ou⁼
(sem vetorização) para 5 bytes também não produz programas de soma primária.4 bytes alternativos (talvez não aceitáveis), soma 571
Se as restrições de E / S ainda permitirem programas completos que levam um argumento.
... usando o mesmo princípio acima, onde
⁼
existe igualdade não-vetorizadora (o aspecto não-vetorizável não tem efeito, pois não há nada a ser vetorizado). Os valores hexadecimais são0D D5 8C CD
o que são13 213 140 205
em decimal, que soma 571, um primo.Observe novamente que o programa de 2 bytes
ÆP
não possui uma soma primária (93).fonte
ƓÆPG
(311) eÆPF
(163) deve estar bem, eu acho?ƓÆḍ,ṠE
, o valor16183
é coincidentemente primo!ƓÆPG
OK. Também perguntei se um programa que receba informações e não o uso de STDIN é aceitável.ÆP¥
é de 3 bytes e 97.CJam , 4 bytes, soma de bytes 439
Usa o teste de primalidade interno.
Experimente online!
Solução alternativa, 4 bytes, soma 461
fonte
Mathematica, 21 bytes,
1997
Input[]
lê uma linha de entrada (a partir do STDIN se nenhuma extremidade frontal é utilizado, através de uma caixa de diálogo, se a extremidade dianteira Mathematica é usada),Print@*PrimeQ
é a composição (@*
) doPrint
ePrimeQ
funções, e@
é notação função prefixo.fonte
Perl 6 ,
2422 bytes,1949
Todos os três caracteres de espaço em branco são obrigatórios.
No entanto, o Perl 6 não se importa com o tipo de caractere de espaço em branco, então escolhi uma nova linha em vez do espaço mais usado para o segundo ...)
fonte
Pyth, 4 bytes,
367
Experimente aqui!
fonte
Pip , 8 bytes,
511
Escrevi um cheque principal e a soma foi excelente. Conveniente. Verifique as entradas 1-30: Experimente online!
Explicação
fonte
Pari / GP , 23 bytes,
2111
Experimente online!
fonte
J, 18 bytes,
1103
Não muito longe do ideal, o mínimo que eu poderia realizar em um teste de primalidade de programa completo era 17 bytes:, o
echo(p:[:".1!:1)1
que infelizmente equivale a 1133 = 11 * 103.Infelizmente, não consigo descobrir como fazer com que a entrada do teclado funcione no TIO, portanto ainda não há link.
Explicação:
Validando o programa:
fonte
C (gcc) ,
6260 bytes, 4583Bem direto. Saídas * se prime, caso contrário, gera um espaço. Não funciona para 1.
-2 graças a l4m2
Experimente online!
fonte
n;main(i){for(scanf("%d",&n);++i<n;)n=n%i?n:0;puts("*"+!n);}
pode precisar de mudar algum nome variável para sum nobreAWK , 36 bytes, soma de bytes 2239
Experimente online!
Saídas
0
se não for prime e1
for prime. Definitivamente não é o código mais eficiente, pois verifica todos os números inteiros maiores do que1
para ver se ele divide a entrada.fonte
Excel (57 bytes, soma do código 3547)
O Excel realmente não possui uma "entrada" como tal, mas essa fórmula espera que o número a ser testado esteja em A1 e seja emitido para qualquer célula em que você o soltar. É uma fórmula de matriz, então pressione Ctrl-Shift-Enter para inserir , em vez de Enter.
fonte
Java 8, 114 bytes, Prime 10037
Experimente online.
Explicação:
Eu usei em
x
vez dei
fazer a soma unicode um primo. Verifique a soma unicode aqui.fonte
Gelatina , 4 bytes, Σ = 239
Experimente online!
Prova: Experimente online! (pegue os índices baseados em 1 dos caracteres do programa da página de código de Jelly, diminua para torná-los baseados em 0, some e verifique se o resultado é primo).
fonte
SmileBASIC, 42 bytes,
2687
Emite 1 (verdadeiro) se o número for primo, caso contrário, 0 (falso).
Os nomes das variáveis não foram escolhidos apenas para tornar o programa principal.
N
é o n úmero de teste,D
é o d iVisor, eP
controla se N é p rime.fonte
Maravilha , 7 bytes,
537
Provavelmente existe uma maneira melhor ...
fonte
Ferrugem, 190 bytes, 15013 score
Ungolfed
Não funciona para 1
fonte
Stax , 349
Execute e depure
fonte
|pQ
obras para uma pontuação de 317. Se swapping truthy / Falsas é permitido,|p!
funciona bem para 269.Sussurros v2 , 33 bytes
Experimente online!
44381
Como funciona
Isso é mostrado na ordem em que é executado:
fonte