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


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!


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

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. 

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)

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

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

3

Mathematica, 97 bytes

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


Pruébalo en línea!


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


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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.