Encontre o enésimo número Aaron


14

fundo

Um par Ruth-Aaron é um par de números inteiros positivos consecutivos ne de n+1tal forma que a soma dos fatores primos (contando os fatores primos repetidos) de cada número inteiro é igual. Por exemplo, (714,715)é um par Ruth-Aaron, uma vez 714=2*3*7*17, 715=5*11*13e 2+3+7+17=5+11+13=29. O nome Ruth-Aaron pair foi escolhido por Carl Pomerance em referência ao total de home runs de carreira de Babe Ruth714 , que permaneceu como o recorde mundial de 25 de maio de 1935 a 8 de abril de 1974, quando Hank Aaron bateu seu 715home run. Você pode aprender mais sobre a fascinante história desses números neste vídeo do Numberphile .

Objetivo

Escreva um programa ou função completa que, dado um número inteiro positivo n, emita o nnúmero th Aaron, em que o nnúmero th é definido como o número inteiro maior do npar Ruth-Aaron. Assim, o nnúmero th Aaron é a(n)+1, onde a(n)está o nth th termo na sequência OEIS A039752 .

Casos de teste

Os primeiros números de Aaron são

6,9,16,78,126,715,949,1331,1521,1863,2492,3249,4186,4192,5406,5561,5960,6868,8281,8464,10648,12352,14588,16933,17081,18491,20451,24896,26643,26650,28449,28810,33020,37829,37882,41262,42625,43216

Regras


Certamente, "contando a multiplicidade" significa que 20 -> 2, 2, 5 e não 2, 5, certo?
HyperNeutrino 7/08

@Okx eu era, eu só notei que quando eu atualizado seu perfil Youtube, ele tinha exatamente mais 1 assinante (não eu)
Mr. Xcoder

@HyperNeutrino Yes. Vou editar para deixar mais claro.
Ngenisis 7/08

Podemos escolher entre 0 e 1 indexação?
Mr. Xcoder

3
Eu também assisti de hoje Numberphile vídeo
shooqie

Respostas:


7

05AB1E , 11 10 9 bytes

-1 byte graças a Emigna
-1 byte graças a Adnan

µN>Ð<‚ÒOË

Explicação:

µ            While the counter variable (which starts at 0) is not equal to the input:
 N>          Store the current iteration index + 1, and then create an array with
   Ð<‚       [current iteration index + 1, current iteration index]
      ÒO     Get the sum of the prime factors of each element
        Ë    If all elements in the array are equal,
             implicitly increment the counter variable

1 indexado.

Experimente online!


1
Explicação quando você puder, por favor :)
Mr. Xcoder

@ Mr.Xcoder Adicionado.
Okx 07/08/19

10 bytes:µN>Ð<‚ÒO˽
Emigna

@ Emigna Ah, bom.
Okx 07/08/19

2
@Adhnan Realmente? Esse é um recurso de linguagem maluca.
Okx 07/08/19

5

Casca , 11 9 bytes

-2 bytes graças a um golfe inteligente da @Leo

€∫Ẋ¤=oΣpN

Experimente online!

Explicação

  Ẋ     N   -- map function over all consecutive pairs ... of natural numbers           [(1,2),(2,3),(3,4),(4,5)...]
   ¤=       --   are the results of the following function equal for both in the pair?
     oΣp    --     sum of prime factors                                                   [0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0]
 ∫          -- cumulative sum                                                           [0,0,0,0,0,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3]                
€           -- the index of the first value equal to the input

1
Bom trabalho, eu estava prestes a postar substancialmente a mesma idéia :)
Leo


1
@ Leo Ooh, €∫é um truque muito bom! E um que só funciona em um idioma preguiçoso. ;)
Zgarb 07/08/19

@ Leo Muito inteligente.
precisa saber é o seguinte

3

Pitão , 23 20 bytes

Isso é indexado em 1.

WhQ=-QqsPZsPhZ=+Z1;Z

Test Suite ou Experimente online!


Explicação

WhQ = -QqsPZsPhZ = + Z1; Z - Programa completo. Recebe entrada da entrada padrão.

WhQ - Enquanto Q ainda for maior que 0.
       sPZ - Soma dos fatores primos de Z.
          sPhZ - Soma dos fatores primos de Z + 1.
      q - Se o acima for igual:
   = -Q - Decrementa Q por 1 se forem iguais e por 0 se não forem.
              = + Z1; - Incremente Z em cada iteração.
                   Z - Saída Z. 

3

Gelatina , 12 bytes

;‘ÆfS€Eµ⁸#Ṫ‘

Um link monádico recebendo e retornando números não negativos

Experimente online!

Quão?

;‘ÆfS€Eµ⁸#Ṫ‘ - Link: number, n
         #   - n-find (counting up, say with i, from implicit 1)
        ⁸    - ...number of matches to find: chain's left argument, n
       µ     - ...action: the monadic chain with argument i:
 ‘           -   increment = i+1
;            -   concatenate = [i,i+1]
  Æf         -   prime factors (with duplicates, vectorises)
    S€       -   sum €ach
      E      -   all (two of them) equal?
          Ṫ  - tail, the last matching (hence nth) i
           ‘ - increment (need to return i+1)


Ainda preciso do rabo.
Jonathan Allan

1
E é isso que você obtém apenas para testar 1.
Erik the Outgolfer

3

PHP, 93 92 91 + 1 bytes

while(2+$argn-=$a==$b)for($b=$a,$a=!$x=$n+=$k=1;$k++<$x;)for(;$x%$k<1;$x/=$k)$a+=$k;echo$n;

Execute como pipe -nRou experimente online .

-2 bytes com 3 indexados (primeiro número Aaron para argumento 3): remova 2+.

demolir

while(2+$argn       # loop until argument reaches -2 (0 and 1 are false positives)
    -=$a==$b)           # 0. if factors sum equals previous, decrement argument
    for($b=$a,          # 1. remember factors sum
        $a=!            # 3. reset factors sum $a
        $x=$n+=         # 2. pre-increment $n and copy to $x
        $k=1;$k++<$x;)  # 4. loop $k from 2 to $x
        for(;$x%$k<1;       # while $k divides $x
            $x/=$k)             # 2. and divide $x by $k
            $a+=$k;             # 1. add $k to factors sum
echo$n;             # print Aaron number $n

3

MATL , 17 bytes

`@:"@Yfs]vd~sG<}@

Baseado em 1. Muito devagar.

Experimente online!

Explicação

`        % Do...while
  @      %   Push iteration index k, starting at 1
  :      %   Range [1 2 ... k]
  "      %   For each j in [1 2 ... k]
    @    %     Push j
    Yf   %     Row vector of prime factors
    s    %     Sum
  ]      %   End
  v      %   Concatenate whole stack into a column vector
  d      %   Consecutive differences. A zero indicates a Ruth-Aaron pair
  ~s     %   Number of zeros
  G<     %   Is it less than the input? If so: next k. Else: exit loop
}        % Finally (execute right before when the loop is exited)
  @      %   Push current k
         % Implicit end. Implicit display

3

Mathematica, 97 bytes

(t=r=1;While[t<=#,If[SameQ@@(Plus@@((#&@@# #[[2]])&/@FactorInteger@#)&/@{#,#+1}&@r),t++];r++];r)&


Experimente online!


Ele precisa produzir o maior do par de acordo com a descrição; 6retorna em 714vez de 715, por exemplo.
numbermaniac

1
@numbermaniac fixed! economizou 2 bytes!
J42161217

2

Pitão, 12 11 bytes

e.fqsPtZsPZ

A indexação de 1 remove um byte e coloca Pyth à frente do Jelly


Explicação

e.fqsPtZsPZ - Programa completo. Recebe entrada da entrada padrão.

ef - Último elemento da lista dos primeiros números de entrada $ para os quais
   q - são iguais 
    ss - A soma de
     PtZ PZ - Fatores primos de $ number-1 e $ number


1

Gelatina , 17 bytes

ÆfS=’ÆfS$$µ³‘¤#ṖṪ

Experimente online!

Explicação

ÆfS=’ÆfS$$µ³‘¤#ṖṪ  Main link, argument is z
              #    Find the first       elements that satisfy condition y: <y><z>#
           ³‘¤                    z + 1
          µ        Monadic link, where the condition is:
  S                The sum of
Æf                            the array of primes that multiply to the number
   =               equals
       S           The sum of
     Æf                       the prime factors of
    ’                                              the number before it
        $$         Last two links as a monad, twice
               Ṗ   k -> k[:-1]
                Ṫ  Last element (combined with `pop`, gets the second last element)

Indexado 1


1
Não sei se a indexação 2 é permitida pelas regras padrão.
Mr. Xcoder

@ Mr.Xcoder Claro, fixo.
HyperNeutrino



0

Python 2 , 119 104 102 101 bytes

f=lambda n,k=2:n/k and(f(n,k+1),k+f(n/k))[n%k<1]
i=input();g=0
while-~i:i-=f(g)==f(g+1);g+=1
print(g)

Experimente online!

-17 bytes graças a @ovs!

-1 byte graças a @notjagan

O crédito é atribuído a Dennis pelo algoritmo de fatoração principal. 1 indexado.


Nota: Isso é extremamente lento e ineficiente. Entradas maiores que 7 travarão, a menos que você defina import syse faça sys.setrecursionlimit(100000), mas funciona em teoria.


104 bytes criando fuma função que calcula a soma dos fatores primos
ovs 07/08

Seria ótimo se você acompanhasse seu número de bytes (e talvez comente suas edições).
Titus

(f(n,k+1),k+f(n/k))[n%k<1]por mais -2 bytes. Isso torna ainda mais lento.
ovs 7/08/19

-1 byte alternando i+1para -~i.
notjagan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.