Os números primos solitários (como eu os chamo) são números primos, nos quais, dada uma grade numérica com largura w ≥ 3
, são números primos que não possuem outros números primos adjacentes a eles, ortogonal ou diagonalmente.
Por exemplo, se levarmos essa grade para onde w = 12
(primos destacados em negrito):
1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23...
...86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106 107 108
109 110 111 112 113 114 115 116 117 118 119 120
Você pode ver que apenas os dois primos 103 e 107 não têm primos adjuvantes ortogonal ou diagonalmente. Eu pulei uma seção porque não há primos solitários lá. (exceto 37, na verdade)
Sua tarefa é, com duas entradas w ≥ 3
e i ≥ 1
determinar o primeiro primo solitário em uma grade numérica com largura w
, onde o referido primo solitário deve ser maior ou igual a i
. As entradas podem ser obtidas em qualquer formato razoável (incluindo tomá-las como cadeias). É garantido que haverá um pico solitário de largura w
.
A grade não se enrola.
Exemplos:
w i output
11 5 11
12 104 107
12 157 157
9 1 151
12 12 37
Como se trata de código-golfe , o código mais curto vence!
w=12
não é37
um primo solitário? Nenhum dos números que o rodeia -{25, 26, 38, 49, 50}
- são primos.Respostas:
C (gcc) ,
159158149 bytesExperimente online!
fonte
JavaScript (ES6),
116104 bytesRecebe entrada na sintaxe de currying
(w)(i)
.Casos de teste
Mostrar snippet de código
Comentado
fonte
Python 2 , 144 bytes
Experimente online!
Argumentos em ordem:
w
,i
.Nenhum módulo externo usado aqui.
Python 2 + sympy, 127 bytes
Experimente online!
Não é digno de um post diferente, pois a única diferença aqui é que ele usa, em
sympy.isprime
vez de uma função de verificação primária implementada manualmente.fonte
MATL , 38 bytes
Experimente online! Ou verifique todos os casos de teste .
Explicação
O código consiste essencialmente em um loop que continua ampliando a grade, conforme descrito no desafio, uma linha a cada iteração.
Depois de criar a grade a cada iteração, a última linha é removida (não podemos saber se esses números primos são solitários ou não) e os números restantes são testados para verificar se existe pelo menos um número primo solitário. Isso é feito via convolução 2D.
Se houver algum primo solitário, saímos do loop e produzimos o primeiro primo desse tipo. Em seguida, prosseguimos com a próxima iteração, que tentará uma grade maior.
(Na verdade, o código usa uma versão transposta da grade, que é ampliada por colunas em vez de por linhas.)
fonte
Julia 0.6, 135 bytes
O TIO não possui o
Primes
pacote. É 5 bytes mais curto se eu puder retornar todos os primos solitários (findfirst
torna-sefind
). A tentativa de Julia de mudar a funcionalidadeBase
está prejudicando o golfe (não é um objetivo de Julia),Primes
foi incluída no 0.4.Ungolfed (principalmente)
fonte
Gelatina , 20 bytes
Experimente online!
Como funciona
fonte
Perl 6 ,
113104 bytesExperimente online!
fonte
Limpo ,
181... 145 bytesExperimente online!
Ungolfed:
fonte
Geléia ,
3029 bytesMeu palpite é que isso provavelmente é superável por uma margem justa
Um elo diádico tomando
i
à esquerda ew
à direita que retorna o primo solitário.Experimente online!
Quão?
fonte
Java 8, 176 bytes
Porto de Jonathan Frech 'C resposta .
Experimente online.
fonte