Um primo é fraco se o outro primo mais próximo for menor que ele. Se houver um empate, o prime não é fraco.
Por exemplo, 73 é um primo fraco porque 71 é primo, mas 75 é composto.
Tarefa
Escreva um código de computador que, quando fornecido um primo maior que 2, como entrada, determinará se é um primo fraco. Esse é um problema de decisão padrão , portanto, você deve gerar dois valores exclusivos para cada um dos dois casos (por exemplo, weak
e not weak
).
Isso é código-golfe, então as regras padrão para a tag se aplicam.
OEIS
Aqui estão os primeiros 47 números primos fracos:
3, 7, 13, 19, 23, 31, 43, 47, 61, 73, 83, 89, 103, 109, 113, 131, 139, 151, 167, 181, 193, 199, 229, 233, 241, 271, 283, 293, 313, 317, 337, 349, 353, 359, 383, 389, 401, 409, 421, 433, 443, 449, 463, 467, 491, 503, 509, 523, 547, 571, 577, 601, 619, 643, 647
Aqui está o OEIS para números primos fracos (deve retornar weak
) OEIS A051635
Aqui está o OEIS para números primos equilibrados (deve retornar not weak
) OEIS A006562
Aqui está o OEIS para números primos fortes (deve retornar not weak
) OEIS A051634
fonte
not weak
oustrong
?Respostas:
Geléia , 7 bytes
Experimente online!
Explicação
Como bônus, mudar
>
para=
ou procurar<
por números primos equilibrados e fortes, respectivamente.fonte
>
, não?Mathematica, 24 bytes
O
NextPrime
built-in pode ser (ab?) Usado para calcular o primo anterior, alimentando-o com um argumento negativo.fonte
Geléia , 9 bytes
Retorna
1
para fraco e0
para não fraco ou equilibrado (retorna1
para uma entrada de2
)Experimente online!
Quão?
fonte
IIṠ⁼1
paraII>0
aI<\
) ... o seu é muito embora diferente. Parece que você pensa diferente de mim ... EDIT: Pietu1998 retornou!PHP , 69 bytes
imprime um para prime fraco e nada para prime não fraco
Experimente online!
fonte
Oitava,
9384 bytesObrigado a @LuisMendo e @ rahnema1 por salvar bytes!
Experimente online!
fonte
i-=1
etc? Além disso,end
não é necessário na função; você pode movê-lo para o rodapéMáximos, 42 bytes
Experimente online!
fonte
MATL , 13 bytes
Isso produz,
1
se fraco,0
caso contrário.Experimente online!
Explicação
fonte
GNU APL 1.2, 78 bytes
∇f N
declara uma função que aceita um argumento.(~R∊R∘.×R)/R←1↓⍳N×2
fornece uma lista de todos os números primos de 2 a duas vezes o argumento. Estou assumindo que o próximo primo é menos que o dobro do original. Se isso não for verdade,N*2
fornece N ao quadrado e leva o mesmo número de bytes (espero que seja grande o suficiente para exceder o próximo primo). (Veja a explicação da Wikipedia sobre como funciona a descoberta principal)X←(R←(...))⍳N
atribui essa lista ao vetorR
(substituindo seu conteúdo anterior), localiza o índice do primo originalN
nessa lista e atribui esse índice aX
.|R[X-1]-N
calcula a diferença entre o primo anterior (porqueR
contém os primos, oX-1
elemento th é o primo anteriorN
) eN
e, em seguida, assume o valor absoluto (o APL opera da direita para a esquerda).|R[X+1]-N
faz o mesmo, mas para o próximo prime.(|R[X-1]-N)<|R[X+1]-N
imprime 1 se o prime anterior estiver mais próximo do original que o próximo prime e 0 em caso contrário. Parênteses são necessários para precedência.∇
finaliza a função.fonte
Geléia , 9 bytes
Experimente online!
fonte
Pitão, 15 bytes
Experimente aqui.
Usa o algoritmo de Pietu1998.
fonte
Perl 6 , 41 bytes
Experimente online!
$_
é o argumento para a função A função de mapeamento-> \n { $_ + n, * + n ... &is-prime }
pega um númeron
e retorna uma sequência de números$_ + n, $_ + 2*n, ...
que termina quando atinge um número primo. Mapear esta função sobre os dois números1
e-1
produz uma sequência de duas seqüências; o primeiro começa com$_ + 1
e termina com o primeiro número primo maior que$_
e o segundo começa com$_ - 1
e termina com o primeiro número primo menor que$_
.[>]
reduz essa lista de dois elementos com o operador maior que, retornando true se a primeira sequência for maior (ou seja, mais longa) que a segunda.fonte
Python 2.7 - 120 bytes
Como o python não possui uma função embutida é primordial, podemos usar o teorema de Wilson para obter um bom verificador primário curto. O teorema de Wilson afirma que um número é primo se e somente se (n-1)! é congruente a -1 mod (n). Portanto, a função retornará 1 se o número for primo e 0 se não for. Depois disso, a função f determinará se o próximo primo desse número ocorrerá primeiro quando incrementado para baixo, em vez de incrementado para cima. Se nenhum dos números incrementados for primo, é apenas chamado recursivamente novamente.
Alguns exemplos de E / S
fonte
Python 2 ,
1221081039492 bytesExperimente online!
Usa a idéia de Pietu ... e depois salvou 28 bytes ao jogar iteradores mais curtos da lista principal; mais 2 substituindo
-3*n>0
por>3*n
(d'oh!)fonte
Regex (a maioria dos sabores), 47 bytes
Experimente online!
Recebe entrada em unário. Produz uma correspondência para números primos fracos, nenhuma correspondência para números primos não fracos. Trabalha em ECMAScript, Perl, PCRE, Python, Ruby.
Explicação:
Seja N a entrada, A o primo mais próximo <N e B o primo mais próximo> N. A principal dificuldade de uma abordagem de expressão regular para esse desafio é que não podemos representar números maiores que a entrada, como B. Em vez disso, Encontre o menor b de modo que 2b + 1 seja primo e 2b + 1> N, o que garante 2b + 1 = B.
Então, observe que não precisamos encontrar A. Contanto que qualquer primo <N esteja mais próximo de N que B, N é um primo fraco.
fonte
Oitava, 53 bytes
Experimente online!
fonte
JavaScript ES6,
162154 bytesEconomize 8 bytes com base no truque de Jörg Hülsermann "imprima nada em um caso". Não é necessário
?"Y":"N"
depoisone<two
fonte
05AB1E , 17 bytes
Experimente online!
Usa o algoritmo de Pietu1998.
fonte
Python 3 , 149 bytes
Experimente online!
Eu estou usando uma função de geração principal (linha superior) tirada desta antiga resposta de troca de pilhas.
fonte
JavaScript, 98 bytes
Menos Golphed
Observe que o código de teste não verifica se a entrada "prime" é realmente uma prime.
fonte
braingasm ,
2322 bytesImprime
1
para números primos fracos e0
para não fracos.Passo a passo:
fonte
Julia 0,6, 64 bytes
fonte
Python 2 , 81 bytes
Experimente online!
Usa o teorema de Wilson para o teste de primalidade.
fonte