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.