找出第n个亚伦编号


14

背景

露丝-亚伦一对是一对连续的正整数的nn+1,使得所述质因数的总和(计数重复素因子)的每个整数相等。例如,(714,715)由于714=2*3*7*17715=5*11*13,和,所以是Ruth-Aaron对2+3+7+17=5+11+13=29卡尔·波默兰斯Carl Pomerance)选择了露丝·亚伦(Ruth-Aaron)这个名字作为对贝贝·露丝Babe Ruth)职业生涯本垒打的总和714,从1935年5月25日到1974年4月8日,这是世界纪录,当时汉克·亚伦(Hank Aaron)达到了715本垒打。您可以在此Numberphile视频中了解有关这些数字的迷人历史的更多信息。

目标

编写一个完整的程序或函数,给定一个正整数n,该函数将输出nth Aaron数,其中nth数定义为nth Ruth-Aaron对的较大整数。因此,n第Aaron数是a(n)+1,在OEIS序列A039752中a(n)n第th项。

测试用例

前几个亚伦数字是

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先生17年

@HyperNeutrino是的。我将进行编辑以使其更加清晰。
ngenisis

我们可以在0和1索引之间选择吗?
Xcoder先生17年

3
我也看过今天的Numberphile视频
-shooqie

Answers:


7

05AB1E11 10 9字节

-1字节归功于Emigna
-1字节归功于Adnan

µ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先生17年

@ 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
好的工作,我打算发表大致相同的想法:)
Leo


1
@Leo Ooh,这€∫是一个非常好的技巧!而只有一种懒惰的语言才有效。;)
Zgarb

@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)


还需要尾巴。
乔纳森·艾伦

1
这就是仅使用进行测试的结果1
暴民埃里克(Erik the Outgolfer)'17年

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):remove 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

Mathematica,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-其第一个$ input数字列表的最后一个元素
   q-相等 
    ss-的总和
     PtZ PZ-$ number-1和$ number的素数


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先生17年

@ 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

归功于Dennis的素数分解算法。1个索引。


注意:这非常慢且效率低下。除非您进行设置import sys,否则高于7的输入将崩溃sys.setrecursionlimit(100000),但是从理论上讲它是有效的。


通过使f函数计算素因子的总和来获得104个字节
ovs

如果您要跟踪字节数(可能会对您的编辑发表评论),那就太好了。
泰特斯

(f(n,k+1),k+f(n/k))[n%k<1]再加上-2个字节 这使其变得更慢。
ovs '17

切换i+1-1个字节-~i
notjagan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.