O aglomerado privilegiada de um número inteiro N mais elevada do que 2 é definido como o par formado pelo maior privilegiada estritamente inferior ao N e o menor primo estritamente maior que N .
Observe que, seguindo a definição acima, se o número inteiro for um primo em si, seu cluster primo será o par dos primos que o precedem e o sucedem .
Tarefa
Dados dois números inteiros N , M ( N, M ≥ 3 ), produza um valor de verdade / falsidade com base no fato de N e M terem o mesmo cluster principal.
Isso é código-golfe , então o objetivo é reduzir sua contagem de bytes o máximo possível. Assim, o código mais curto em toda linguagem de programação vence.
Casos de teste / Exemplos
Por exemplo, o cluster principal de 9 é [7, 11]
porque:
- 7 é o primo mais alto estritamente menor que 9 e
- 11 é o primo mais baixo estritamente superior a 9 .
Da mesma forma, o cluster principal de 67 é [61, 71]
(observe que 67 é primo).
Pares verdadeiros
8, 10 20, 22 65, 65 73, 73 86, 84 326, 318 513, 518
Pares de falsidade
4, 5 6, 8 409, 401 348, 347 419, 418 311, 313 326, 305
fonte
Respostas:
Geléia ,
64354 bytesExperimente online! ou Experimente todos os casos de teste .
Como funciona
Funciona porque dois números têm aglomerados primos diferentes se houver um primo entre eles ou qualquer um dos números é primo; a menos que ambos os números sejam iguais, nesse caso,
E
retorne1
assim mesmo (todos os itens em uma matriz de item único são iguais).fonte
Perl 6 , 52 bytes
Teste-o
Expandido:
fonte
Python 3 ,
1039591 bytesExperimente online!
fonte
Ruby ,
5754 bytesExperimente online!
Usa o horrível teste de primalidade regex da minha resposta (que eu havia esquecido até clicar nele) para a pergunta relacionada Esse número é primo? . Como temos N, M ≥ 3, a verificação de 1 pode ser removida do padrão, fazendo com que o byte conte menos do que usando o embutido.
Nota: O teste de primalidade regex é patologicamente, hilariamente ineficiente. Acredito que seja pelo menos O (n!), Embora não tenha tempo para descobrir isso agora. Demorou doze segundos para checar 100.001 e ficou moendo por cinco ou dez minutos em 1.000.001 antes de cancelá-lo. Use / abuse por sua conta e risco.
fonte
n²
. Você sabe, o100001! = 2824257650254427477772164512240315763832679701040485762827423875723843380680572028502730496931545301922349718873479336571104510933085749261906300669827923360329777024436472705878118321875571799283167659071802605510878659379955675120386166847407407122463765792082065493877636247683663198828626954833262077780844919163487776145463353109634071852657157707925315037717734498612061347682956332369235999129371094504360348686870713719732258380465223614176068 ... (Warning: The output exceeded 128 KiB and was truncated.)
que levará milênios para ser executado.Retina , 58 bytes
Experimente online! Explicação:
Se ambas as entradas forem iguais, exclua tudo e passe para a saída 1 no final.
Converta para unário.
Classificar em ordem.
Expanda para um intervalo de todos os números.
Exclua todos os números compostos.
Se não houver números restantes, digite 1, caso contrário, 0.
fonte
PARI / GP, 28 bytes
Experimente online com todos os casos de teste!
Retorna
0
ou1
(valores "booleanos" comuns do PARI / GP)).Explicação:
v
deve ser um vetor (ou um vetor de coluna ou uma lista) com os dois númerosN
eM
como coordenadas. Por exemplo[8, 10]
. Em seguidas
, será o "conjunto" feito desses números, que é um vetor de uma coordenada (seN==M
) ou um vetor de duas coordenadas com entradas ordenadas .Então, se o número
#s
de coordenadas ems
é apenas uma, obtemos1
(verdade). Caso contrário,primes
retornará um vetor de todos os números primos no intervalo fechado des[1]
as[2]
. A negação!
disso dará1
se o vetor estiver vazio, enquanto a negação de um vetor de uma ou mais entradas diferentes de zero (aqui uma ou mais primos) dará0
.fonte
JavaScript (ES6),
5756 bytesRecebe entrada na sintaxe de currying
(a)(b)
. Retorna0
ou1
.Casos de teste
Mostrar snippet de código
Como?
fonte
R ,
6346 bytes-17 por Giuseppe
Experimente online!
Aplicação bastante simples da solução Jelly da ETHProductions . O principal argumento interessante
éque com vetores booleanos Rany(x)==all(x)
é equivalente amin(x)==max(x)
.fonte
numbers
instalado em vezmin(x)==max(x)
é equivalente a verificar se todos os elementosis_prime(a:b)
são iguais, podemos usar esse último truque para reduzi-lo a 46 bytes comprimes
onumbers
pacote ou .C (gcc),
153146 bytes-7 de Jonathan Frech
Define uma função
h
que recebe dois seint
retorna1
para verdade e0
para falseyExperimente online!
n
é uma função que retorna 1 se seu argumento não for primo.g
é uma macro que define seus primeiro e segundo argumentos para o próximo primo menor que e maior que (respectivamente), é terceiro argumentoh
fazg
para ambas as entradas e verifica se as saídas são as mesmas.fonte
return a==c&&b==d;
pode serreturn!(a-c|b-d);
.Gelatina , 6 bytes
Experimente online!
-2 graças a Dennis .
fonte
APL (Dyalog Unicode) ,
18 + 16 = 3424 bytesExperimente online!
Agradecimentos a Adám por 10 bytes.
A linha
⎕CY'dfns'
( C OP Y é necessário) para importar os NDR ( d inâmica f unctio ns ) recolha, incluído no padrão Dyalog APL instala.Como funciona:
fonte
Python 2 ,
8786 bytesExperimente online!
fonte
C (gcc) ,
103 bytes100 bytesExperimente online!
fonte
Haskell , 81 bytes
Uma solução simples:
Experimente online!
fonte
Mathematica,
392726 bytesExpandido:
Uso:
Contribuições: -12 bytes por Jenny_mathy , -1 byte por Martin Ender
fonte
Equal@@NextPrime[#,{-1,1}]&
toma como entrada[{N,M}]
ou se você quiser manter a entrada original usar esses 30 bytes:Equal@@NextPrime[{##},{-1,1}]&
#~NextPrime~{-1,1}
.J , 15 bytes
Como funciona:
Experimente online!
fonte