Encuentra el enésimo número de Aaron

14

Antecedentes

Un par Ruth-Aaron es un par de enteros positivos consecutivos ny n+1tal que la suma de los factores primos (contando los factores primos repetidos) de cada entero es igual. Por ejemplo, (714,715)es un par Ruth-Aaron, ya que 714=2*3*7*17, 715=5*11*13, y 2+3+7+17=5+11+13=29. El nombre de la pareja Ruth-Aaron fue elegido por Carl Pomerance en referencia al total de cuadrangulares de carrera de Babe Ruth714 , que se mantuvo como el récord mundial desde el 25 de mayo de 1935 hasta el 8 de abril de 1974 cuando Hank Aaron bateó su 715jonrón. Puedes obtener más información sobre la fascinante historia de estos números en este video de Numberphile .

Objetivo

Escriba un programa o función completa que, dado un número entero positivo n, arroje el nnúmero th Aaron, donde el nnúmero th se define como el número entero más grande del npar th Ruth-Aaron. Por lo tanto, el nnúmero th Aaron es a(n)+1, donde a(n)es el ntérmino th en la secuencia OEIS A039752 .

Casos de prueba

Los primeros números de Aaron son

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

Reglas

ngenisis
fuente
Para estar seguros, "contar multiplicidad" significa que 20 -> 2, 2, 5 no 2, 5 ¿verdad?
HyperNeutrino
@Okx estaba, me di cuenta de que cuando actualicé su perfil de Youtube, tenía exactamente 1 suscriptor más (no yo)
Sr. Xcoder
@HyperNeutrino Sí. Lo editaré para dejarlo más claro.
ngenisis
¿Podemos elegir entre 0 y 1 indexación?
Sr. Xcoder
3
Yo también vi el video de Numberphile de hoy
shooqie

Respuestas:

7

05AB1E , 11 10 9 bytes

-1 byte gracias a Emigna
-1 byte gracias a Adnan

µN>Ð<‚ÒOË

Explicación:

µ            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.

Pruébalo en línea!

Okx
fuente
1
Explicación cuando puedas, por favor :)
Sr. Xcoder
@ Mr.Xcoder agregado.
Okx
10 bytes:µN>Ð<‚ÒO˽
Emigna
@Emigna Ah, linda.
Okx
2
@Adhnan ¿En serio? Esa es una característica del lenguaje loco.
Okx
5

Cáscara , 11 9 bytes

-2 bytes gracias a un inteligente golf de @Leo

€∫Ẋ¤=oΣpN

Pruébalo en línea!

Explicación

  Ẋ     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
H.PWiz
fuente
1
Buen trabajo, estaba a punto de publicar sustancialmente la misma idea :)
Leo
1
@Leo Ooh, €∫es un buen truco! Y uno que solo funciona en un lenguaje vago. ;)
Zgarb
@Leo Muy inteligente.
H.PWiz
3

Pyth , 23 20 bytes

Esto es 1 indexado.

WhQ=-QqsPZsPhZ=+Z1;Z

Test Suite o Pruébelo en línea!


Explicación

WhQ = -QqsPZsPhZ = + Z1; Z - Programa completo. Toma entrada de entrada estándar.

WhQ: mientras que Q es aún mayor que 0.
       sPZ - Suma de los factores primos de Z.
          sPhZ: suma de los factores primos de Z + 1.
      q - Si lo anterior es igual:
   = -Q - Disminuye Q en 1 si son iguales y en 0 si no lo son.
              = + Z1; - Incremente Z en cada iteración.
                   Z - Salida Z. 
Sr. Xcoder
fuente
3

Jalea , 12 bytes

;‘ÆfS€Eµ⁸#Ṫ‘

Un enlace monádico que toma y devuelve números no negativos

Pruébalo en línea!

¿Cómo?

;‘Æ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)
Jonathan Allan
fuente
Guardar un byte con ;’ÆfS€E_Ịµ#.
Erik the Outgolfer
Todavía necesito la cola.
Jonathan Allan
1
Y eso es lo que obtienes solo para probar 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;

Ejecutar como tubería -nRo probarlo en línea .

-2 bytes con 3 indexados (primer número de Aaron para argumento 3): eliminar 2+.

Descompostura

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
Titus
fuente
3

MATL , 17 bytes

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

Basado en 1. Muy lento.

Pruébalo en línea!

Explicación

`        % 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
Luis Mendo
fuente
3

Mathematica, 97 bytes

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


Pruébalo en línea!

J42161217
fuente
Necesita generar el par más grande de acuerdo con la descripción; 6devuelve en 714lugar de 715, por ejemplo.
numbermaniac
1
@numbermaniac arreglado! ahorrado 2 bytes!
J42161217
2

Pyth, 12 11 bytes

e.fqsPtZsPZ

La indexación desde 1 elimina un byte y coloca a Pyth por delante de Jelly


Explicación

e.fqsPtZsPZ - Programa completo. Toma entrada de entrada estándar.

ef - Último elemento de la lista de los primeros números de entrada $ para los cuales
   q - son iguales 
    ss - La suma de
     PtZ PZ - Factores primos de $ número-1 y $ número

Dave
fuente
1

Jalea , 17 bytes

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

Pruébalo en línea!

Explicación

Æ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)

1 indexado

Hiperneutrino
fuente
1
No estoy seguro de que las reglas predeterminadas permitan la indexación 2.
Sr. Xcoder
@ Mr.Xcoder Claro, arreglado.
HyperNeutrino
0

Python 2 , 119104102101 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)

Pruébalo en línea!

-17 bytes gracias a @ovs!

-1 byte gracias a @notjagan

El crédito va a Dennis por el algoritmo de factorización principal. 1 indexado.


Nota: Esto es extremadamente lento e ineficiente. Las entradas superiores a 7 se bloquearán a menos que lo configure import sysy lo haga sys.setrecursionlimit(100000), pero funciona en teoría.

Sr. Xcoder
fuente
104 bytes por hacer funa función de cálculo de la suma de factores primos
ovs
Sería genial si realiza un seguimiento de su bytecount (y tal vez comentar sus ediciones).
Titus
(f(n,k+1),k+f(n/k))[n%k<1]por otros -2 bytes. Esto lo hace aún más lento.
ovs
-1 byte cambiando i+1a -~i.
notjagan