Esta é a sequência A054261 .
O th número de contenção principal é o número mais baixo, que contém o primeiro primos números como subsequências. Por exemplo, o númeroé o número mais baixo que contém os 3 primeiros números primos como substrings, tornando-o o terceiro número de contenção principal.
É trivial descobrir que os quatro primeiros números de contenção primos são , , e235711 112357 , mas depois fica mais interessante. Como o próximo primo é 11, o próximo número de contenção do primo não é , mas é pois é definido como o menor número com a propriedade.
No entanto, o verdadeiro desafio surge quando você ultrapassa 11. O próximo número de contenção principal é . Observe que neste número, as substrings e estão sobrepostas. O número também se sobrepõe ao número .11
13
3
13
É fácil provar que essa sequência está aumentando, já que o próximo número precisa atender a todos os critérios do número anterior e ter mais uma substring. No entanto, a sequência não está aumentando estritamente, como é mostrado pelos resultados para n=10
e n=11
.
Entrada
Um único número inteiro n>0
(suponho que você também possa indexá-lo em 0 e depois criar n>=0
)
Saída
O n
th número de contenção primária ou uma lista que contém os primeiros n
números de contenção primária.
Os números que encontrei até agora são:
1 => 2
2 => 23
3 => 235
4 => 2357
5 => 112357
6 => 113257
7 => 1131725
8 => 113171925
9 => 1131719235
10 => 113171923295
11 => 113171923295
12 => 1131719237295
Observe que n = 10
e n = 11
são o mesmo número, pois é o número mais baixo que contém todos os números , mas também contém .
Como esse código é marcado como golfe, comece a jogar golfe! Soluções de força bruta são permitidas, mas seu código precisa funcionar para qualquer entrada na teoria (o que significa que você não pode simplesmente concatenar os primeiros n primos). Feliz golfe!
P
operador cria um mapeamento explícito para verificar se há números primos no número (em vez de verificar se o número está na matriz de números primos)? Esta é uma solução bonita, duvido que você possa fazer qualquer solução usando menos comandos.P
é o produto. Basicamente, multiplica todos os valores em uma lista. OÅp
criará uma lista com a primeiran
quantidade de números primos, onden
está a entradaI
neste caso. Oå
irá verificar para cada número nesta lista de números primos se eles estão no número atual da lista infinita, onde dará1
para verdade e0
para falsey. Portanto, o produto basicamente verifica se todos são verdadeiros; se todos os números primos estiverem dentro do número atual. Se houver 0, osP
resultados também serão falsos. Mas se todos são1
, osP
resultados são verdadeiros e o.Δ
loop é interrompido.1µNIÅpåP
. Para aqueles que não conhecem 05AB1E, uma explicação para a minha também:1µ
- até que a variável do contador atinja 1 (começa em 0, aumenteN
gradualmente 1 e execute:NIÅpåP
- verifique se todos os primeiros números primos <input> aparecem emN
e , em caso afirmativo, incrementar a variável do contador automaticamente Retorna o valor final de N..X
, em vez de1
, becuase razões), mas eu mudei para isso desde que eu nunca tive a chance de usar∞
antes :)Gelatina , 11 bytes
Experimente online!
Força bruta simples. Não totalmente certo de como
#
a aridade funciona, então pode haver algum espaço para melhorias.Como funciona
fonte
wⱮẠ¥1#ÆN€
salva dois bytes.Java 8, 143 bytes
Experimente online.
NOTAS:
n=7
.n=9
devido ao limite de tamanho deint
(máximo de2,147,483,647
).int
para along
, o máximo é aumentado para uma saída abaixo9,223,372,036,854,775,807
(sobren=20
eu acho?)java.math.BigInteger
do máximo pode ser aumentado para qualquer tamanho (em teoria), mas será em torno de 200 bytes, pelo menos devido à verbosidade dosjava.math.BigInteger
métodos.Explicação:
fonte
JavaScript (ES6),
105 ... 9291 bytesExperimente online!
Quão?
Comentado
fonte
Ruby , 58 bytes
Experimente online!
Força bruta, trabalha até 7 no TIO.
fonte
Pitão , 14 bytes
Experimente online!
Pitão , 15 bytes
Um pouco mais rápido, mas com um byte a mais.
Experimente online!
fonte
Gelatina , 14 bytes
Experimente online!
fonte
Carvão , 42 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Construa os primeiros
n
números primos pela divisão de teste de todos os números inteiros por todos os números primos encontrados anteriormente.Faça um loop por todos os números inteiros até encontrarmos um que contenha todos os números primos como substrings.
Transmitir o resultado para string e imprimir implicitamente.
A velocidade do programa pode ser dobrada ao custo de um byte, substituindo o último
≦⊕η
por≦⁺²η
mas ainda é muito lento para calcularn>6
.fonte
Perl 6 ,
6359 bytes-4 bytes graças a nwellnhof
Experimente online!
Soluções de força bruta que excedem o tempo limite de TIO para números acima de 5, mas tenho certeza de que funciona corretamente. Localiza o primeiro número positivo que contém os primeiros
n
números primos. Aqui está uma solução que não atinge o tempo limiten=6
.Explicação:
fonte
Python 2 , 131 bytes
Experimente online!
f
é a funçãofonte
Python 2 , 91 bytes
Experimente online!
fonte
SAS, 149 bytes
A entrada é inserida após a
cards;
instrução, da seguinte forma:Produz um conjunto de dados
p
, com o resultadov
, com uma linha de saída para cada valor de entrada. Tecnicamente, deve funcionar para todos os casos de teste fornecidos (o número máximo máximo com precisão total no SAS é 9.007.199.254.740.992), mas desisti depois de deixá-lo pensar por 5 minutos em n = 8.Explicação:
fonte
Haskell , 102 bytes
Experimente online!
Explicação / Ungolfed
Como já
Data.List
importamos, podemos usá-lo: em vez do bom e velhotake n[p|p<-[2..],all((>0).mod p)[2..p-1]]
, podemos usar outra maneira de gerar todos os números primos de que precisamos. Ou seja, geramos uma quantidade suficiente de compostos e os usamos juntamente com(\\)
:n*n
fonte
Japonês,
2018 bytesLonge do meu melhor trabalho, fiquei feliz em fazê-lo funcionar depois do dia que tive. Tenho certeza de que acabarei batendo nele mais tarde na boozer!
Experimente - leva 13 segundos para executar uma entrada de
7
, lança um vacilante depois disso (a versão atualizada é louca5
para mim, mas esse pode ser apenas o meu telefone).fonte
F.h()
por conta própria e ele parece estar quebrado; ETH deve ter mudado alguma coisa.