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

Genisis
quelle
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!

Okx
quelle
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
H.PWiz
quelle
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. 
Mr. Xcoder
quelle
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)
Jonathan Allan
quelle
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
Titus
quelle
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
Luis Mendo
quelle
3

Mathematica, 97 Bytes

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


Probieren Sie es online!

J42161217
quelle
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

Dave
quelle
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

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

Ruby , 89 86 Bytes

->n{(1..1/s=0.0).find{|x|r,c=2,0
0while x%r<1?(x/=r;c+=r):x>=r+=1
(c==s)?0>n-=1:!s=c}}

Probieren Sie es online!

GB
quelle
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.

Mr. Xcoder
quelle
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