Dado um número inteiro positivo n, os números a e b (formando a fração reduzida a / b ) são tais que:
Onde p k é o k th número primo (com p 1 = 2).
Exemplos:
1 -> 3, 5
2 -> 12, 25
3 -> 144, 325
4 -> 3456, 8125
5 -> 41472, 99125
15 -> 4506715396450638759507001344, 11179755611058498955501765625
420 -> very long
As verificações principais probabilísticas são permitidas e tudo bem se sua resposta falhar devido a limitações no tipo inteiro do seu idioma.
O menor código em bytes vence.
code-golf
arithmetic
orlp
fonte
fonte
3.0
vez de3
?a
eb
como um tipo racional?Respostas:
M , 9 bytes
Experimente online!
Curiosidades
Conheça M!
M é um garfo de geléia, voltado para desafios matemáticos. A principal diferença entre Jelly e M é que M usa precisão infinita para todos os cálculos internos, representando os resultados simbolicamente. Quando M estiver mais maduro, Jelly gradualmente se tornará mais polivalente e menos orientado para a matemática.
M é muito trabalho em andamento (cheio de bugs, e não realmente que diferente de Jelly agora), mas funciona como um encanto para este desafio e eu não pude resistir.
Como funciona
fonte
ÆN
único operador específico de M? Também MellyMathematica, 32 bytes
Uma função sem nome que recebe entrada inteira e retorna a fração real.
Isso usa o fato de que . O código é então modificado, graças ao fato de o Mathematica encadear todas as listas aritméticas básicas. Então, primeiro criamos uma lista , depois recuperamos todos esses números primos e inserimos essa lista na expressão acima. Isso nos dá uma lista de todos os fatores. Por fim, multiplicamos tudo aplicando a lista à qual você pode jogar golfe .
(p2-1)/(p2+1) = 1-2/(p2+1)
{1, 2, ..., n}
Times
1##&
Como alternativa, podemos usar
Array
a mesma contagem de bytes:fonte
1-2
=1
certo?-1
na verdade), mas1-2/x ≠ -1/x
. ;)@Range@
±~Array~
Python 2, 106 bytes
A primeira e a quarta linhas doem tanto ... acabou que usar
Fraction
era melhor do que multiplicar separadamente e usargcd
, mesmo no Python 3.5+, ondegcd
residemath
.A geração principal adaptada da resposta de @ xnor aqui , que usa o teorema de Wilson.
fonte
Ruby,
1227765 bytesAgradecimentos a Sherlock por reduzir 10 bytes.
Define uma função anônima que pega um número e retorna a
Rational
.fonte
PARI / GP , 33 bytes
Versão alternativa (46 bytes):
Versão não concorrente que fornece o
t_REAL
resultado de ponto flutuante ( ) (38 bytes):fonte
Geléia ,
1413 bytesExperimente online! Obrigado a @Dennis por -1 byte.
fonte
Pyth,
2625Experimente aqui ou execute o Test Suite .
1 byte salvo graças ao Jakube!
Implementação bastante ingênua das especificações. Usa o spiffy "new" (não tenho idéia de quando isso foi adicionado, mas nunca o vi antes)
P<neg>
que retorna se o valor positivo de um número negativo é primo ou não. Alguns dos mapas, etc, provavelmente podem ser jogados de golfe ...fonte
Julia,
5942 bytesEsta é uma função anônima que aceita um número inteiro e retorna a
Rational
comBigInt
numerador e denominador.Começamos gerando a lista de números primos menor que 2 n 2 e selecionando os primeiros n elementos. Isso funciona porque o n º Prime é sempre menor do que n 2 para todo n > 1. ( Veja aqui .)
Para cada p dos n primos selecionados, fazemos o quadrado de p usando a força elementar (
.^2
) e construímos o racional 2 / ( p + 1), onde 2 é primeiro convertido em aBigInt
para garantir precisão suficiente. Subtraímos isso de 1, pegamos o produto da matriz resultante de racionais e retornamos a racional resultante.Exemplo de uso:
Guardado 17 graças a Sp3000!
fonte
Convexo, 28 bytes
Convexo é uma nova linguagem que estou desenvolvendo que é fortemente baseada em CJam e Golfscript. O intérprete e o IDE podem ser encontrados aqui . A entrada é um número inteiro nos argumentos da linha de comandos. Os índices são baseados em um. Usa a codificação CP-1252.
Você pode ou não considerar essa resposta como concorrente, pois eu estava trabalhando em alguns recursos que este programa usa antes do lançamento do desafio, mas o commit foi feito assim que o desafio foi lançado.
fonte
MATL , 18 bytes
Experimente online!
Falha em entradas grandes porque apenas números inteiros até
2^52
podem ser representados com precisão internamente.Explicação
fonte
Mathematica, 45 bytes
Primes? Frações? Mathematica.
fonte
Haskell, 53 bytes
Função anônima, 53 caracteres:
Experimente aqui (observação: no GHCi padrão, você precisa primeiro certificar-se
Data.Ratio
eData.List
importar):A indexação de lista de Haskell
!!
é baseada em 0.(___!!)
é uma seção do operador , formando uma função anônima para que(xs !!) n == xs !! n
.São quatro bytes a menos para gerar a sequência inteira:
fonte
Sério, 25 bytes
Saídas
a\nb
(\n
é uma nova linha). As entradas grandes levarão muito tempo (e poderão falhar devido à falta de memória) porque a geração principal é muito lenta.Experimente online!
Explicação:
fonte