É sabido que números primos ímpares aparecerão no triângulo de Pascal exatamente duas vezes. No entanto, nem todos os números que aparecem exatamente duas vezes no triângulo de Pascal são primos. Vamos chamar esses números de Pascal primos.
Os números primos de Pascal são números compostos que aparecem exatamente duas vezes no triângulo de Pascal. Os primeiros primos Pascal são
4, 8, 9, 12, 14, 16, 18, ...
Seu desafio é pegar um número inteiro positivo n como entrada e saída verdadeiro ou falso, dependendo se n for um primo Pascal ou não. Isso é código-golfe, então o programa mais curto vence!
Respostas:
Wolfram Language (Mathematica) , 45 bytes
Experimente online!
Todo número composto n aparece exatamente duas vezes na linha n e não pode aparecer depois. Portanto, a condição para os primos do Pascal é que eles não aparecem nas primeiras n-1 linhas.
Até onde eu sei, isso é mais curto do que verificar se ele aparece exatamente duas vezes nas primeiras n linhas e poder usá-lo
!PrimeQ
.fonte
Python 2 , 93 bytes
Experimente online!
Esta é uma função nomeada f , que sai via código de saída , 0 para Pascal Primes, 1 caso contrário.
Como isso funciona?
Isso basicamente verifica se n ocorre nas primeiras n - 1 linhas do triângulo de Pascal ou se é primo e gera um erro se alguma dessas duas condições for atendida.
Economizou 1 byte graças a ovs .
fonte
Geléia ,
11109 bytesGraças a:
’
(+1) evite usarn2
(-2), portanto, -1 no geral.Experimente online!
Abordagem alternativa , por Jonathan Allan . (defeituoso)
Explicação para a última linha:
n
aparece duas vezes no triângulo Pascal" é equivalente a "n
não aparece nas primeirasn-1
linhas".true
se o número não for primo (ou seja,ÆP == 0
) e a contagemc
for zero. A partir disso, podemos deduzir issoÆP == c
.Pode-se provar que, se são iguais, são iguais a 0, porque:
ÆP
retorne um valor booleano, que pode ser apenas 0 ou 1.n
será primo e, portanto, não poderá aparecer nas primeirasn-1
linhas (ou seja,c == 0
)fonte
1
não é primo de Pascal; isto diz que é.Ḷc€ḶFċoÆP¬
funcionaria eu acho.ċ=ÆP
Deveria trabalhar.Ḷcþ`Fċ=ÆP
deve funcionar.Haskell ,
8684 bytesExperimente online!
Explicação
A função
p
define recursivamente um triângulo de Pascal degenerado:Como podemos ver (nesta solução
1
é algo especial), todo númeron
aparece exatamente duas vezes nan+1
quinta linha e todos os elementos das linhas subseqüentes apenasn
aumentam ; portanto, precisamos verificar se está em algum lugar até an
quinta linha para ver se um O elemento é desqualificado:Agora, como temos
True
todos os elementos que aparecem mais de duas vezes (exceto1
), tudo o que precisamos é ter umaisPrime
função defeituosa que retorneTrue
para1
:fonte
APL (Dyalog) ,
44342419 bytes5 bytes salvos graças a @Cowsquack
Experimente online!
Quão?
Garantimos que nem
⍳
- intervalo0
..n-1
,⍳∘.!
- no binômio cartesiano consigo mesmo⊢∊
- contern
,⍱
- nem⊢|⍨
-n
módulo cada item de2↓⍳
- faixa2
..n-1
~0∊
- não contém0
(também conhecido como não divisível)fonte
(∨/1↓1≠⊢∨⍳)∧(~⊢∊⍳∘.!⍳)
é mais curto por dois bytes(0∊⊢|⍨2↓⍳)∧∘~⊢∊⍳∘.!⍳
por mais dois, eu mudei o algoritmo primality verificação~
dá(~0∊⊢|⍨2↓⍳)⍱⊢∊⍳∘.!⍳
por menos um byte.JavaScript (Node.js) ,
103101 bytesExperimente online!
fonte
n=>(r=x=>[...Array(n).keys(F=n=>n>0?n*F(n-1):1)].every(x))(i=>r(j=>F(i)/F(j)/F(i-j)-n))>F(n-1)**2%n
obras threority mas na verdade para pequeno intervaloRuby ,
9795 bytesExperimente online!
Raspou alguns bytes.
fonte
R , 55 bytes
Experimente online!
sum(!n%%1:n)>2
é o teste e compostasouter(1:n-1,1:n,choose)
linhas Calcula0
an-1
do triângulo de Pascal, por isso certifique-sen
não aparecer lá.fonte
05AB1E , 10 bytes
Experimente online!
Explicação
Verifica que
n
ocorre exatamente duas vezes nas primeiras n + 1 linhas do triângulo pascal e não é primo.A comparação funciona, pois não há números primos que possam ocorrer 3 vezes no triângulo.
fonte
Haskell , 90 bytes
Experimente online!
fonte
Pitão , 10 bytes
Experimente online! ou verifique o conjunto de testes.
fonte
JavaScript (Node.js) ,
79133130128 bytesExperimente online!
verificador primário do mal +50 bytes :(
fonte
Python 2 ,
105104 bytesgraças a user202729 por -1 byte
Experimente online!
fonte
p+r
parece redundante ...