Найдите номер Аарона


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Аарона th, где число nth определяется как большее целое число 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
Объяснение, когда вы можете, пожалуйста :)
Mr. Xcoder

@ Mr.Xcoder Добавлено.
Okx

10 байт:µN>Ð<‚ÒO˽
Emigna

@ 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
Версия для игры в
Лев

1
@ Лео О, €∫это действительно хороший трюк! И тот, который работает только на ленивом языке. ;)
Згарб

@ Лео Очень умно.
H.PWiz

3

Pyth , 23 20 байт

Это 1-индексированный.

WhQ=-QqsPZsPhZ=+Z1;Z

Test Suite или попробуйте онлайн!


объяснение

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_Ịµ#.
Эрик Outgolfer

Еще нужен хвост.
Джонатан Аллан

1
И это то, что вы получаете только для тестирования 1.
Эрик 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


2

Pyth, 12 11 байтов

e.fqsPtZsPZ

Индексирование от 1 удаляет байт и ставит Pyth впереди Jelly


объяснение

e.fqsPtZsPZ - Полная программа. Принимает данные из стандартного ввода.

ef - последний элемент списка первых $ входных чисел, для которых
   q - равны 
    сс - сумма
     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

Python 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функцию вычисления суммы главных факторов
овс

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

(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.