Inspirado por esta entrada Numberphile
fundo
Os números de distância do cubo de um número inteiro n são definidos aqui como o conjunto de números inteiros que estão a distância de x³ para um dado x . Para um exemplo simples, com n=100
e x=2
, os números da distância do cubo são {92,108}
.
Isso pode ser estendido para um conjunto maior simplesmente variando x . Com x ∈ {1,2,3,4}
o mesmo n=100
, temos o conjunto resultante {36,73,92,99,101,108,127,164}
.
Vamos definir CD (n, x) como o conjunto de todos os números inteiros n ± z³
com z ∈ {1,2,3,...,x}
.
Agora, podemos nos concentrar em algumas das propriedades especiais desses números de distância do cubo . Das muitas propriedades especiais que os números podem ter, as duas propriedades nas quais estamos interessados aqui são primalidade e divisores primos .
Para o exemplo acima CD (100,4) , observe que 73, 101, 127
todos são primos. Se removermos aqueles do conjunto, ficaremos com {36,92,99,108,164}
. Todos os divisores primos desses números são (em ordem) {2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41}
, o que significa que temos 5 divisores primos distintos {2,3,23,11,41}
. Podemos, portanto, definir que o CD (100,4) possui voracidade 1 de 5
.
O desafio aqui é escrever uma função ou programa, no menor número de bytes, que produza a voracidade de uma determinada entrada.
Entrada
- Dois números inteiros positivos
n
ex
, em qualquer formato conveniente.
Resultado
- Um único número inteiro que descreve a intensidade dos dois números de entrada, quando calculado com CD (n, x) .
Regras
- A entrada / saída pode ser feita através de qualquer método adequado .
- Aplicam-se restrições de brecha padrão .
- Para facilitar o cálculo, você pode assumir que os dados de entrada serão tais que o CD (n, x) terá apenas números positivos no conjunto (ou seja, nenhum CD (n, x) terá números negativos ou zero).
- A função ou o programa deve poder manipular números de entrada para que
n + x³
se encaixem no tipo de dados inteiro nativo do seu idioma. Por exemplo, para um tipo inteiro assinado de 32 bits, todos os números de entrada comn + x³ < 2147483648
são possíveis.
Exemplos
n,x - output
2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0)
5,1 - 2
100,4 - 5
720,6 - 11
Notas de rodapé
1 - Assim nomeado porque não estamos interessados na cardinalidade do conjunto, mas em um tipo diferente de pássaro. Como estamos lidando com divisores "comuns", escolhi usar o corvo comum .
100,4
rende 5? Os números da distância do cubo desse conjunto são36,164
e os principais fatores desse conjunto são2,3,41
(já que os fatores desse conjunto são{2, 3, 4, 6, 9, 12, 18, 36}
e{2, 4, 41, 82, 164}
, respectivamente). Portanto, a saída deve ser de 3, não 5.100,4
é o exemplo que o OP explica na seção Background. Seu erro parece ser que você deveria considerar tudo1..x
, então,[1,2,3,4]
neste caso.Respostas:
Gelatina, 16 bytes
Aceita x e n como argumentos de linha de comando, nessa ordem. Experimente online!
Como funciona
fonte
Pitão -
211918 bytesGostaria de saber se há um truque.
Conjunto de Teste .
fonte
Julia, 107 bytes
Esta é uma função que aceita dois números inteiros e retorna um número inteiro.
Ungolfed:
fonte
05AB1E ,
2019 bytesCódigo:
Entrada na forma
x
,n
. Usa CP-1252 codificação .Experimente online!
fonte
MATL , 21 bytes
De entrada é
x
,n
separados por uma nova linha.Experimente online!
Explicação
fonte
J, 30 bytes
Este é um verbo diádico, usado da seguinte maneira:
Experimente aqui.
Explicação
fonte
@:+(
por que tão triste, cara de cabelo incrível?Python 3.5,
218198 bytes:( Obrigado ao @Blue por me salvar 20 bytes.)
Uma boa função lambda de uma linha, embora possa ser um pouco longa. Desde que eu estava usando Python, tive que criar minha própria maneira de encontrar os compostos para o primeiro passo e, em seguida, os divisores principais para o último passo, por isso não foi muito fácil, e esse foi o mais curto por mim . poderia fazê-lo. No entanto, ele faz o que precisa e tenho orgulho disso. :) No entanto, todas as dicas para jogar um pouco mais são bem-vindas.
fonte
PARI / GP , 79 bytes
Aqui está minha implementação direta original. A versão otimizada acima combina os dois vetores em um único vetor um pouco mais complicado.
fonte
f
(likef=(n,x)->...
), poderá testá-lo comf(100,4)
. Como alternativa, você pode invocá-lo em uma linha com((n,x)->...)(100,4)
.Ruby, 138 bytes
Foi um trocadilho y desafio. :-)
fonte
Ruby,
132120114 bytesEstou ciente de que esta solução ainda precisa de muito golfe. Quaisquer dicas de golfe são bem-vindas.
Ungolfing:
fonte
Python 3.5 -
177175159 bytesQualquer dica de golfe bem-vindo :)
Ungolfed:
fonte
Wolfram Language (Mathematica) , 90 bytes
Experimente online!
sem golfe: o código é lido principalmente da direita para a esquerda,
fonte