Tìm số Aaron thứ n


14

Lý lịch

Một cặp Ruth - Aaron là một cặp số nguyên dương liên tiếp nn+1sao cho tổng các thừa số nguyên tố (tính các thừa số nguyên tố lặp lại) của mỗi số nguyên bằng nhau. Ví dụ, (714,715)là một cặp Ruth-Aaron, kể từ 714=2*3*7*17, 715=5*11*132+3+7+17=5+11+13=29. Tên Ruth-Aaron cặp được chọn bởi Carl Pomerance trong tài liệu tham khảo để Babe Ruth nghiệp nhà chạy tổng 's của 714, mà đứng như kỷ lục thế giới từ 25 tháng 5 năm 1935 cho đến ngày 08 tháng 4 năm 1974 khi Hank Aaron trúng mình 715chạy về nhà thứ. Bạn có thể tìm hiểu thêm về lịch sử hấp dẫn của những con số này trong video Numberphile này .

Mục tiêu

Viết một chương trình hoặc hàm hoàn chỉnh, với một số nguyên dương n, xuất ra nsố Aaron thứ, trong đó nsố thứ được xác định là số nguyên lớn hơn của ncặp Ruth-Aaron. Do đó, nthứ Aaron số là a(n)+1, nơi a(n)nhạn thứ trong chuỗi OEIS A039752 .

Các trường hợp thử nghiệm

Một vài số Aaron đầu tiên là

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

Quy tắc


Để chắc chắn, "tính bội số" có nghĩa là 20 -> 2, 2, 5 chứ không phải 2, 5 phải không?
HyperNeutrino

@Okx Tôi là, tôi chỉ nhận thấy rằng khi tôi làm mới hồ sơ Youtube của mình, anh ấy đã có thêm 1 người đăng ký (không phải tôi)
Ông Xcoder

@HyperNeutrino Vâng. Tôi sẽ chỉnh sửa để làm rõ hơn.
ngenisis

Chúng ta có thể chọn từ 0 đến 1 lập chỉ mục không?
Ông Xcoder

3
Tôi cũng vậy, đã xem video Numberphile ngày hôm nay
shooqie

Câu trả lời:


7

05AB1E , 11 10 9 byte

-1 byte nhờ Emigna
-1 byte nhờ Adnan

µN>Ð<‚ÒOË

Giải trình:

µ            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 chỉ mục.

Hãy thử trực tuyến!


1
Giải thích khi nào bạn có thể, làm ơn :)
Ông Xcoder

@ Mr.Xcoder Đã thêm.
Okx

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

@Emigna À, đẹp quá.
Okx

2
@Adh Nam Thật sao? Đó là một tính năng ngôn ngữ điên rồ.
Okx

5

Husk , 11 9 byte

-2 byte nhờ vào một golf thông minh của @Leo

€∫Ẋ¤=oΣpN

Hãy thử trực tuyến!

Giải trình

  Ẋ     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
Làm tốt lắm, tôi chuẩn bị đăng một ý tưởng tương tự :)
Leo


1
@Leo Ooh, €∫là một mẹo thực sự tốt đẹp! Và một trong đó chỉ hoạt động trong một ngôn ngữ lười biếng. ;)
Zgarb

@Leo Rất thông minh.
H.PWiz

3

Bình thường , 23 20 byte

Đây là 1 chỉ mục.

WhQ=-QqsPZsPhZ=+Z1;Z

Phòng thử nghiệm hoặc dùng thử trực tuyến!


Giải trình

WhQ = -QqsPZsPhZ = + Z1; Z - Chương trình đầy đủ. Lấy đầu vào từ đầu vào tiêu chuẩn.

WhQ - Trong khi Q vẫn cao hơn 0.
       sPZ - Tổng các thừa số nguyên tố của Z.
          sPhZ - Tổng các thừa số nguyên tố của Z + 1.
      q - Nếu các giá trị trên bằng nhau:
   = -Q - Giảm Q bằng 1 nếu chúng bằng nhau và bằng 0 nếu không.
              = + Z1; - Tăng Z trên mỗi lần lặp.
                   Z - Đầu ra Z. 

3

Thạch , 12 byte

;‘ÆfS€Eµ⁸#Ṫ‘

Một liên kết đơn âm lấy và trả về các số không âm

Hãy thử trực tuyến!

Làm sao?

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

Lưu một byte với ;’ÆfS€E_Ịµ#.
Erik the Outgolfer

Vẫn cần cái đuôi.
Jonathan Allan

1
Và đó là những gì bạn nhận được để thử nghiệm chỉ với 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;

Chạy như ống với -nRhoặc thử trực tuyến .

-2 byte với 3 chỉ mục (số Aaron nắm tay cho đối số 3): remove 2+.

phá vỡ

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 byte

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

1 dựa. Rất chậm.

Hãy thử trực tuyến!

Giải trình

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

Toán học, 97 byte

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


Hãy thử trực tuyến!


Nó cần phải xuất ra lớn hơn của cặp theo mô tả; 6trả về 714thay vì 715, ví dụ.
numbermaniac

1
@numbermaniac cố định! đã lưu 2 byte!
J42161217

2

Bình thường, 12 11 byte

e.fqsPtZsPZ

Lập chỉ mục từ 1 sẽ loại bỏ một byte và đặt Pyth lên trước Jelly


Giải trình

e.fqsPtZsPZ - Chương trình đầy đủ. Lấy đầu vào từ đầu vào tiêu chuẩn.

ef - Phần tử cuối cùng của danh sách các số đầu vào $ đầu tiên
   q - bằng nhau 
    ss - Tổng của
     PtZ PZ - Các thừa số nguyên tố của $ number-1 và $ number


1

Thạch , 17 byte

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

Hãy thử trực tuyến!

Giải trình

Æ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 chỉ mục


1
Tôi không chắc chắn việc lập chỉ mục 2 được cho phép theo quy tắc mặc định.
Ông Xcoder

@ Mr.Xcoder Chắc chắn, đã sửa.
HyperNeutrino



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)

Hãy thử trực tuyến!

-17 byte nhờ @ovs!

-1 byte nhờ @notjagan

Tín dụng cho Dennis cho thuật toán nhân tố chính. 1 chỉ mục.


Lưu ý: Điều này cực kỳ chậm và không hiệu quả. Đầu vào cao hơn 7 sẽ bị sập trừ khi bạn đặt import sysvà làm sys.setrecursionlimit(100000), nhưng nó hoạt động trên lý thuyết.


104 byte bằng cách tạo fmột hàm tính tổng các thừa số nguyên tố
ovs

Sẽ thật tuyệt nếu bạn theo dõi bytecount của bạn (và có thể nhận xét các chỉnh sửa của bạn).
Tít

(f(n,k+1),k+f(n/k))[n%k<1]cho -2 byte khác. Điều này làm cho nó thậm chí chậm hơn.
trứng

-1 byte bằng cách chuyển i+1sang -~i.
notjagan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.