Temukan nomor Harun ke-n

14

Latar Belakang

Sepasang Ruth-Aaron adalah sepasang bilangan bulat positif berturut-turut ndan n+1sedemikian rupa sehingga jumlah faktor prima (menghitung faktor prima berulang) dari masing-masing bilangan bulat adalah sama. Sebagai contoh, (714,715)adalah sepasang Ruth-Harun, sejak 714=2*3*7*17, 715=5*11*13dan 2+3+7+17=5+11+13=29. Nama pasangan Ruth-Aaron dipilih oleh Carl Pomerance mengacu pada total karir home run Babe Ruth714 , yang berdiri sebagai rekor dunia dari 25 Mei 1935 hingga 8 April 1974 ketika Hank Aaron memukul 715home run ke - thnya. Anda dapat mempelajari lebih lanjut tentang sejarah yang menarik dari angka-angka ini di sini video Numberphile .

Tujuan

Tuliskan program atau fungsi yang lengkap, yang diberi bilangan bulat positif n, menghasilkan angka nAaron th, di mana angka nth didefinisikan sebagai bilangan bulat yang lebih besar dari pasangan nRuth-Aaron th. Dengan demikian nth nomor Aaron adalah a(n)+1, di mana a(n)adalah nistilah th di Oei urutan A039752 .

Uji kasus

Beberapa angka Harun pertama adalah

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

Aturan

ngenisis
sumber
Yang pasti, "menghitung multiplisitas" berarti bahwa 20 -> 2, 2, 5 bukan 2, 5 kan?
HyperNeutrino
@Okx saya dulu, saya baru sadar bahwa ketika saya menyegarkan profil Youtube-nya, dia punya 1 pelanggan lagi (bukan saya)
Tn. Xcoder
@HyperNeutrino Ya. Saya akan mengedit agar lebih jelas.
ngenisis
Bisakah kita memilih antara 0 dan 1 pengindeksan?
Tn. Xcoder
3
Saya juga menonton video Numberphile hari ini
shooqie

Jawaban:

7

05AB1E , 11 10 9 byte

Terima kasih -1 byte ke Emigna
-1 byte terima kasih kepada Adnan

µN>Ð<‚ÒOË

Penjelasan:

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

Cobalah online!

Okx
sumber
1
Penjelasan kapan Anda bisa, tolong :)
Tn. Xcoder
@ Mr.Xcoder Ditambahkan.
Okx
10 byte:µN>Ð<‚ÒO˽
Emigna
@Emigna Ah, bagus.
Okx
2
@ Adhnan Benarkah? Itu fitur bahasa yang gila.
Okx
5

Sekam , 11 9 byte

-2 byte berkat pandai golf oleh @Leo

€∫Ẋ¤=oΣpN

Cobalah online!

Penjelasan

  Ẋ     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.Piz
sumber
1
Kerja bagus, saya akan memposting ide yang sama secara substansial :)
Leo
1
@ Leo Ooh, €∫trik yang sangat bagus! Dan satu yang hanya bekerja dalam bahasa yang malas. ;)
Zgarb
@ Leo sangat pintar.
H.PWiz
3

Pyth , 23 20 byte

Ini 1-diindeks.

WhQ=-QqsPZsPhZ=+Z1;Z

Test Suite atau Coba online!


Penjelasan

WhQ = -QqsPZsPhZ = + Z1; Z - Program lengkap. Mengambil input dari input standar.

WhQ - Sementara Q masih lebih tinggi dari 0.
       sPZ - Jumlah faktor utama Z.
          sPhZ - Jumlah faktor utama Z + 1.
      q - Jika di atas sama:
   = -Q - Penurunan Q dengan 1 jika mereka sama, dan dengan 0 jika tidak.
              = + Z1; - Kenaikan Z pada setiap iterasi.
                   Z - Output Z. 
Tuan Xcoder
sumber
3

Jelly , 12 byte

;‘ÆfS€Eµ⁸#Ṫ‘

Tautan monadik yang mengambil dan mengembalikan nomor non-negatif

Cobalah online!

Bagaimana?

;‘Æ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
sumber
Simpan satu byte dengan ;’ÆfS€E_Ịµ#.
Erik the Outgolfer
Masih butuh ekor.
Jonathan Allan
1
Dan itu yang Anda dapatkan hanya dengan pengujian 1.
Erik the Outgolfer
3

PHP, 93 92 91 + 1 byte

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;

Jalankan sebagai pipa dengan -nRatau coba online .

-2 byte dengan 3-diindeks (nomor tinju Aaron untuk argumen 3): hapus 2+.

kerusakan

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
sumber
3

MATL , 17 byte

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

Berbasis 1. Sangat lambat.

Cobalah online!

Penjelasan

`        % 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
sumber
3

Mathematica, 97 byte

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


Cobalah online!

J42161217
sumber
Perlu menampilkan pasangan yang lebih besar sesuai dengan deskripsi; 6mengembalikan 714bukan 715, misalnya.
numbermaniac
1
@numbermaniac diperbaiki! disimpan 2 byte!
J42161217
2

Pyth, 12 11 byte

e.fqsPtZsPZ

Pengindeksan dari 1 menghapus byte, dan menempatkan Pyth di atas Jelly


Penjelasan

e.fqsPtZsPZ - Program lengkap. Mengambil input dari input standar.

ef - Elemen terakhir dari daftar angka input $ pertama yang
   q - Apakah sama 
    ss - Jumlah
     PtZ PZ - Faktor prima dari $ number-1 dan $ number

Dave
sumber
1

Jelly , 17 byte

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

Cobalah online!

Penjelasan

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

HyperNeutrino
sumber
1
Saya tidak yakin pengindeksan 2 diizinkan oleh aturan default.
Tn. Xcoder
@ Mr.Xcoder Tentu, sudah diperbaiki.
HyperNeutrino
1

Ruby , 89 86 byte

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

Cobalah online!

GB
sumber
0

Python 2 , 119 104 102 101 byte

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)

Cobalah online!

-17 byte terima kasih kepada @ovs!

-1 byte terima kasih kepada @notjagan

Kredit diberikan kepada Dennis untuk algoritma faktorisasi utama. 1-diindeks.


Catatan: Ini sangat lambat dan tidak efisien. Input yang lebih tinggi dari 7 akan macet kecuali Anda mengatur import sysdan melakukannya sys.setrecursionlimit(100000), tetapi ini berfungsi secara teori.

Tuan Xcoder
sumber
104 byte dengan membuat ffungsi menghitung jumlah faktor prima
ovs
Akan lebih bagus jika Anda akan melacak bytecount Anda (dan mungkin komentar Anda diedit).
Titus
(f(n,k+1),k+f(n/k))[n%k<1]untuk byte -2 lainnya. Ini membuatnya lebih lambat.
Ovs
-1 byte dengan beralih i+1ke -~i.
notjagan