Знайдіть n-е число Аарона


14

Фон

Рут-Аарон пара є парою послідовних позитивних цілих чисел nі n+1таких , що сума головних чинників (повторного підрахунок простих множників) кожне цілого числа рівні. Наприклад, (714,715)пара Рут-Аарон, так як 714=2*3*7*17, 715=5*11*13і 2+3+7+17=5+11+13=29. Пару Рут-Аарон було вибрано Карлом Померансом у зв'язку з загальним пробігом дому в кар'єрі Бейб Рут714 , яка становила світовий рекорд з 25 травня 1935 року до 8 квітня 1974 року, коли Хенк Аарон потрапив у свій 715домашній біг. Ви можете дізнатися більше про захоплюючу історію цих номерів у цьому відеоролику Numberphile .

Мета

Напишіть повну програму або функцію, яка, отримавши натуральне ціле число n, виводить число nАарона, де nчисло число визначено більшим цілим числом nпари Рут-Аарон. Таким чином, nчислом Аарона є a(n)+1, де a(n)знаходиться третійn член у послідовності OEIS A039752 .

Тестові справи

Перші кілька номерів Аарона є

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

Правила


Безумовно, "підрахунок кратності" означає, що 20 -> 2, 2, 5 не 2, 5 правильно?
HyperNeutrino

@Okx Я був, я просто помітив, що коли я оновив його профіль на Youtube, у нього було рівно ще 1 підписник (не я)
містер Xcoder

@HyperNeutrino Так. Я відредагую, щоб зробити більш зрозумілим.
ngenisis

Чи можемо ми вибрати між індексуванням 0 і 1?
Містер Xcoder

3
Я теж переглянув сьогоднішнє відео
Numberphile

Відповіді:


7

05AB1E , 11 10 9 байт

-1 байт завдяки Еміньї
-1 байт завдяки Аднану

µN>Ð<‚ÒOË

Пояснення:

µ            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-індексований.

Спробуйте в Інтернеті!


1
Пояснення, коли зможете, будь ласка :)
Містер Xcoder

@ Mr.Xcoder Додано
Okx

10 байт:µN>Ð<‚ÒO˽
Емінья

@Emigna Ах, приємний.
Okx

2
@Adhnan Дійсно? Це божевільна особливість мови.
Okx

5

Лушпиння , 11 9 байт

-2 байти завдяки розумному гольфу від @Leo

€∫Ẋ¤=oΣpN

Спробуйте в Інтернеті!

Пояснення

  Ẋ     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
Хороша робота, я збирався опублікувати фактично ту саму ідею :)
Лев

2
Версія для гравців tio.run/##ARsA5P9odXNr///igqziiKvhuorCpD1vzqNwTv///zY
Лев

1
@Leo Ooh, €∫це справді приємний трюк! І такий, який працює лише ледачою мовою. ;)
Згарб

@Leo Дуже розумний.
H.PWiz

3

Піт , 23 20 байт

Це 1-індексований.

WhQ=-QqsPZsPhZ=+Z1;Z

Тестовий сюїт або спробуйте онлайн!


Пояснення

WhQ = -QqsPZsPhZ = + Z1; Z - Повна програма. Бере вхід зі стандартного вводу.

WhQ - Хоча Q все ще вище 0.
       sPZ - Сума простих факторів Z.
          sPhZ - сума простих факторів Z + 1.
      q - Якщо вищезазначені рівні:
   = -Q - зменшення Q на 1, якщо вони рівні, і на 0, якщо вони не є.
              = + Z1; - Приріст Z на кожну ітерацію.
                   Z - вихід Z. 

3

Желе , 12 байт

;‘ÆfS€Eµ⁸#Ṫ‘

Монадічне посилання, що приймає та повертає негативні числа

Спробуйте в Інтернеті!

Як?

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

Збережіть байт за допомогою ;’ÆfS€E_Ịµ#.
Ерік Аутгольфер

Ще потрібен хвіст.
Джонатан Аллан

1
І це те, що ви отримуєте лише для тестування 1.
Erik the Outgolfer

3

PHP, 93 92 91 + 1 байт

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;

Запустіть як трубу -nRабо спробуйте в Інтернеті .

-2 байти з 3-індексованим (кулак Аароновим номером для аргументу 3): видалити 2+.

зламатися

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 байт

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

1-основа. Дуже повільно.

Спробуйте в Інтернеті!

Пояснення

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

Математика, 97 байт

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


Спробуйте в Інтернеті!


Потрібно вивести більший з пар відповідно до опису; 6повертається 714замість 715, наприклад.
numbermaniac

1
@numbermaniac виправлено! збережено 2 байти!
J42161217

2

Pyth, 12 11 байт

e.fqsPtZsPZ

Індексація з 1 видаляє байт і ставить Pyth попереду Jelly


Пояснення

e.fqsPtZsPZ - Повна програма. Бере вхід зі стандартного вводу.

ef - Останній елемент списку перших $ вхідних чисел, для яких
   q - рівні 
    ss - сума
     PtZ PZ - Прості коефіцієнти $ число-1 та $ число


1

Желе , 17 байт

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

Спробуйте в Інтернеті!

Пояснення

Æ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-індексований


1
Я не впевнений, що 2-індексація дозволена правилами за замовчуванням.
Містер Xcoder

@ Mr.Xcoder Звичайно, виправлено.
HyperNeutrino



0

Пітон 2 , 119 104 102 101 байт

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)

Спробуйте в Інтернеті!

-17 байт завдяки @ovs!

-1 байт завдяки @notjagan

Кредит передається Деннісу за алгоритм основної факторизації. 1-індексований.


Примітка. Це надзвичайно повільно і неефективно. Введення, що перевищують 7, завершаться, якщо ви не встановите import sysта зробите це sys.setrecursionlimit(100000), але це теоретично працює.


104 байти , склавши fфункцію, що обчислює суму простих факторів
ovs

Було б чудово, якби ви відстежували свій рахунок (і, можливо, коментували свої зміни).
Тит

(f(n,k+1),k+f(n/k))[n%k<1]ще -2 байти. Це робить це ще повільніше.
ов

-1 байт шляхом переходу i+1на -~i.
notjagan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.