N. Aaron numarasını bulun


14

Arka fon

Bir Ruth-Aaron çift ardışık pozitif bir tamsayı çifti olan nve n+1eşit her bir tamsayının asal faktörlerin toplamı şekilde (sayımı tekrarlanmıştır ana faktörleri). Örneğin, (714,715)çünkü bir Ruth-Aaron çifti 714=2*3*7*17, 715=5*11*13ve 2+3+7+17=5+11+13=29. Adı Ruth-Aaron çifti tarafından seçildi Carl Pomerance'nin referans Babe Ruth 's kariyer home run toplam 714zaman 8 Nisan 1974'e kadar 25 Mayıs 1935 ile dünya rekoru olarak durdu, Hank Aaron onun isabet 715inci home run. Bu Numberphile videosunda bu sayıların büyüleyici geçmişi hakkında daha fazla bilgi edinebilirsiniz .

Hedef

Pozitif bir tam sayı verilir, tam bir program ya da işlev Yazın n, çıktılar ninci Aaron numarası, ninci numarası daha büyük tam sayı olduğu tanımlandığı ninci Ruth-Aaron çifti. Böylece nAaron sayıdır inci a(n)+1, burada a(n)olduğu nOEIS dizisi th terimi A039752 .

Test senaryoları

İlk birkaç Aaron numarası

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

kurallar


Emin olmak için, "çokluğu saymak" 20 -> 2, 2, 5 değil 2, 5 değil mi?
— HyperNeutrino

@Okx Ben, sadece Youtube profilini yenilediğimde, tam olarak 1 daha abone (ben değil) olduğunu fark ettim
— Bay Xcoder

@HyperNeutrino Evet. Daha açıklamak için düzenleyeceğim.
— ngenisis

0 ile 1 arasında indeksleme seçebilir miyiz?
— Bay Xcoder

3
Ben de bugünün Numberphile videosunu izledim
— shooqie

Yanıtlar:


7

05AB1E , 11 10 9 bayt

Emigna
sayesinde -1 bayt Adnan sayesinde -1 bayt

µN>Ð<‚ÒOË

Açıklama:

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

Çevrimiçi deneyin!


1
Yapabildiğiniz zaman açıklama, lütfen :)
— Bay Xcoder

@ Mr.Xcoder Eklendi.
— Okx

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

@Emigna Ah, iyi olan.
— Okx

2
@Adhnan Gerçekten mi? Bu çılgın bir dil özelliği.
— Okx

5

Kabuk , 11 9 bayt

@Leo tarafından yapılan akıllı golf sayesinde -2 bayt

€∫Ẋ¤=oΣpN

Çevrimiçi deneyin!

açıklama

  Ẋ     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
İyi iş
— Leo


1
@ Leo Ooh, €∫gerçekten güzel bir numara! Ve sadece tembel bir dilde çalışan biri. ;)
— Zgarb

@Leo Çok zeki.
— H.PWiz

3

Pyth , 23 20 bayt

Bu 1 endekslidir.

WhQ=-QqsPZsPhZ=+Z1;Z

Suite'i test edin veya çevrimiçi deneyin!


açıklama

WhQ = -QqsPZsPhZ = + Z1; Z - Tam program. Standart girişten giriş alır.

WhQ - Q hala 0'dan yüksekken.
       sPZ - Z'nin başlıca faktörlerinin toplamı.
          sPhZ - Z + 1'in asal faktörlerinin toplamı.
      q - Yukarıdakiler eşitse:
   = -Q - Eşitse Q değerini 1, düşürmezse 0 azaltır.
              = + Z1; - Her yinelemede Z değerini artırın.
                   Z - Çıkış Z. 

3

Jöle , 12 bayt

;‘ÆfS€Eµ⁸#Ṫ‘

Negatif olmayan sayıları alan ve döndüren monadik bir bağlantı

Çevrimiçi deneyin!

Nasıl?

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

İle bir bayt kaydedin ;’ÆfS€E_Ịµ#.
— Outgolfer Erik

Hala kuyruğa ihtiyacım var.
— Jonathan Allan

1
Ve sadece test etmek için aldığınız şey budur 1.
— Outgolfer Erik

3

PHP, 93 92 91 + 1 bayt

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;

Pipo ile çalıştırın -nRveya çevrimiçi deneyin .

3 dizinli -2 bayt (argüman için yumruk Aaron numarası 3): kaldır 2+.

Yıkmak

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 bayt

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

1 tabanlı. Çok yavaş.

Çevrimiçi deneyin!

açıklama

`        % 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 bayt

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


Çevrimiçi deneyin!


Açıklamaya göre çiftin daha büyük çıkması gerekir; örneğin, yerine 6döner . 714715
— numbermaniac

1
@ sayıya ait sabit! 2 bayt kaydedildi!
— J42161217

2

Pyth, 12 11 bayt

e.fqsPtZsPZ

1'den endeksleme bir baytı kaldırır ve Pyth'i Jelly'in önüne koyar


açıklama

e.fqsPtZsPZ - Tam program. Standart girişten giriş alır.

ef - İlk $ girdi numaralarının listesinin son öğesi
   q - Eşittir 
    ss - Toplamı
     PtZ PZ - $ number-1 ve $ number'in ana faktörleri


1

Jöle , 17 bayt

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

Çevrimiçi deneyin!

açıklama

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


1
2-endekslemeye varsayılan kurallar tarafından izin verildiğinden emin değilim.
— Bay Xcoder

@ Mr.Xcoder Elbette, düzeltildi.
— HyperNeutrino



0

Python 2 , 119104102101 bayt

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)

Çevrimiçi deneyin!

@Ovs sayesinde -17 bayt !

@Notjagan sayesinde -1 bayt

Ana çarpanlara ayırma algoritması için Dennis'e kredi verilir . 1 endeksli.


Not: Bu son derece yavaş ve verimsizdir. Ayarlamadığınız import sysve yapmadığınız sürece 7'den yüksek girdiler kilitlenir sys.setrecursionlimit(100000), ancak teoride çalışır.


fAsal faktörlerin toplamını hesaplayan bir fonksiyon yaparak 104 bayt
— ovs

Bayt hesabınızı takip ederseniz (ve belki de düzenlemelerinize yorum yaparsanız) iyi olur.
— Titus

(f(n,k+1),k+f(n/k))[n%k<1]-2 bayt için. Bu onu daha da yavaşlatır.
— ovs

-1 bayt geçiş i+1için -~i.
— notjagan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.