Finden Sie die n-te Aaron-Nummer


14

Hintergrund

Ein Ruth-Aaron-Paar ist ein Paar aufeinanderfolgender positiver Ganzzahlen, nund zwar n+1so, dass die Summe der Primfaktoren (die sich wiederholenden Primfaktoren zählen) jeder Ganzzahl gleich ist. Zum Beispiel (714,715)ist ein Ruth-Aaron Paar, da 714=2*3*7*17, 715=5*11*13und 2+3+7+17=5+11+13=29. Der Name Ruth-Aaron-Paar wurde von Carl Pomerance in Bezug auf Babe Ruths Karriere-Homerun insgesamt gewählt 714, der vom 25. Mai 1935 bis zum 8. April 1974 als Weltrekord galt, als Hank Aaron seinen 715dritten Homerun bestritt. In diesem Numberphile-Video erfahren Sie mehr über die faszinierende Geschichte dieser Zahlen .

Tor

Schreiben Sie ein vollständiges Programm oder eine Funktion, die bei einer positiven ganzen Zahl die aaronsche Zahl nausgibt n, wobei die naaronsche Zahl als die größere ganze Zahl des naaronschen Ruth-Paares definiert ist. Somit ist die aaron-n Zahl a(n)+1, wobei a(n)der aten Term in der OEIS-Sequenz A039752 ist .

Testfälle

Die ersten paar Aaron-Nummern sind

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

Regeln


Gewiss bedeutet "Multiplizität zählen", dass 20 -> 2, 2, 5 nicht 2, 5 richtig ist?
HyperNeutrino

@Okx Ich war, ich habe gerade bemerkt, dass er, als ich sein Youtube-Profil auffrischte, genau 1 weiteren Abonnenten hatte (nicht mich)
Mr. Xcoder

@HyperNeutrino Ja. Ich werde bearbeiten, um es klarer zu machen.
Genisis

Können wir zwischen 0 und 1 Indexierung wählen?
Mr. Xcoder

3
Ich habe auch das heutige Numberphile-Video gesehen
shooqie

Antworten:


7

05AB1E , 11 10 9 Bytes

-1 Byte danke an Emigna
-1 Byte dank Adnan

µN>Ð<‚ÒOË

Erläuterung:

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

Probieren Sie es online!


1
Erklärung, wann Sie können, bitte :)
Herr Xcoder

@ Mr.Xcoder Hinzugefügt.
Okx

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

@Emigna Ah, nett.
Okx

2
@Adhnan Wirklich? Das ist eine verrückte Sprachfunktion.
Okx

5

Schale , 11 9 Bytes

-2 Bytes dank eines cleveren Golfs von @Leo

€∫Ẋ¤=oΣpN

Probieren Sie es online!

Erläuterung

  Ẋ     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
Gute Arbeit, ich wollte im Wesentlichen die gleiche Idee posten :)
Leo


1
@Leo Ooh, €∫ist ein wirklich schöner Trick! Und eine, die nur in einer faulen Sprache funktioniert. ;)
Zgarb

@Leo Sehr schlau.
H.PWiz

3

Pyth , 23 20 Bytes

Dies ist 1-indiziert.

WhQ=-QqsPZsPhZ=+Z1;Z

Test Suite oder Online testen !


Erläuterung

WhQ = -QqsPZsPhZ = + Z1; Z - Volles Programm. Übernimmt die Eingabe von der Standardeingabe.

WhQ - Während Q immer noch höher als 0 ist.
       sPZ - Summe der Primfaktoren von Z.
          sPhZ - Summe der Primfaktoren von Z + 1.
      q - Wenn die obigen Werte gleich sind:
   = -Q - Verringere Q um 1, wenn sie gleich sind, und um 0, wenn sie nicht gleich sind.
              = + Z1; - Inkrementiere Z bei jeder Iteration.
                   Z - Ausgang Z. 

3

Gelee , 12 Bytes

;‘ÆfS€Eµ⁸#Ṫ‘

Ein monadischer Link, der nicht negative Zahlen aufnimmt und zurückgibt

Probieren Sie es online!

Wie?

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

Speichern Sie ein Byte mit ;’ÆfS€E_Ịµ#.
Erik der Outgolfer

Brauche noch den Schwanz.
Jonathan Allan

1
Und das bekommen Sie zum Testen nur mit 1.
Erik der 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;

Lauf als Pipe mit -nRoder versuche es online .

-2 Bytes mit 3-Index (erste Aaron-Nummer für Argument 3): entfernen 2+.

Nervenzusammenbruch

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<}@

1-basiert. Sehr langsam.

Probieren Sie es online!

Erläuterung

`        % 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)&


Probieren Sie es online!


Es muss das größere des Paares gemäß der Beschreibung ausgegeben werden; 6kehrt 714statt 715, zum Beispiel.
Numbermaniac

1
@numbermaniac behoben! 2 Bytes gespart!
J42161217

2

Pyth, 12 11 Bytes

e.fqsPtZsPZ

Indizierung von 1 entfernt ein Byte und setzt Pyth vor Jelly


Erläuterung

e.fqsPtZsPZ - Volles Programm. Übernimmt die Eingabe von der Standardeingabe.

ef - Letztes Element der Liste der ersten $ eingegebenen Zahlen, für die
   q - Sind gleich 
    ss - Die Summe von
     PtZ PZ - Primfaktoren von $ number-1 und $ number


1

Gelee , 17 Bytes

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

Probieren Sie es online!

Erläuterung

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


1
Ich bin nicht sicher, ob die 2-Indizierung standardmäßig zulässig ist.
Mr. Xcoder

@ Mr.Xcoder Klar, behoben.
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)

Probieren Sie es online!

-17 Bytes dank @ovs!

-1 Byte danke an @notjagan

Dank geht an Dennis für den Primfaktor-Algorithmus. 1-indiziert.


Hinweis: Dies ist extrem langsam und ineffizient. Eingaben über 7 stürzen ab, es sei denn, Sie setzen import sysund tun dies sys.setrecursionlimit(100000), aber es funktioniert theoretisch.


104 Bytes durch feine Funktion zur Berechnung der Summe der Primfaktoren
ovs

Wäre großartig, wenn Sie Ihr bytecount verfolgen würden (und möglicherweise Ihre Änderungen kommentieren würden).
Titus

(f(n,k+1),k+f(n/k))[n%k<1]für weitere -2 Bytes. Das macht es noch langsamer.
Ovs

-1 Byte durch Umschalten i+1auf -~i.
Notjagan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.