n 번째 아론 번호 찾기


14

배경

루스 - 아론 쌍의 연속적인 양의 정수 쌍 nn+1동일한 각 정수의 소인수의 합이되도록 (반복 카운트 소인수). 예를 들어, (714,715)때문에, 루스 - 아론의 쌍 714=2*3*7*17, 715=5*11*132+3+7+17=5+11+13=29. Ruth-Aaron 쌍의 이름은 Carl Pomerance 에 의해 Babe Ruth 의 커리어 홈런 총점으로 7141935 년 5 월 25 일부터 행크 아론이 홈런을 쳤을 때까지 1974 년 4 월 8 일까지 세계 기록으로 선정되었습니다 715. 이 Numberphile 비디오 에서 이러한 숫자의 매혹적인 역사에 대해 자세히 알아볼 수 있습니다 .

양의 integer가 주어지면 th 번째 Aaron 숫자를 n출력 하는 완전한 프로그램이나 함수를 작성하십시오 n. 여기서 nth 숫자는 nRuth-Aaron 쌍 의 더 큰 정수로 정의됩니다 . 따라서 n아론 번호가 제는 a(n)+1여기서 a(n)는 IS nOEIS 시퀀스에서 제 용어 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

I이었다 @Okx, 난 그냥 (내가 아니라) 내가 그의 유튜브 프로필을 새로 고칠 때, 그가 정확히 1 이상 가입자을 한 것으로 나타났습니다
씨 Xcoder

@HyperNeutrino 예. 더 명확하게 편집하겠습니다.
ngenisis

0과 1 사이의 색인을 선택할 수 있습니까?
Mr. Xcoder

3
나도 오늘 Numberphile 비디오를 보았습니다
shooqie

답변:


7

05AB1E , 11 10 9 바이트

Emigna 덕분에
-1 바이트 Adnan 덕분에 -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 바이트

@Leo의 영리한 골프 덕분에 -2 바이트

€∫Ẋ¤=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
좋은 작품, 나는 거의 같은 아이디어를 게시하려고했다 :)
레오


1
@ 레오 오, €∫정말 멋진 트릭입니다! 그리고 게으른 언어로만 작동합니다. ;)
Zgarb

@ 레오 매우 영리합니다.
H.PWiz

3

Pyth , 23 20 바이트

이것은 1 인덱스입니다.

WhQ=-QqsPZsPhZ=+Z1;Z

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_Ịµ#.
아웃 골퍼 에릭 17

여전히 꼬리가 필요합니다.
Jonathan Allan

1
이것이 바로 테스트로 얻은 것입니다 1.
아웃 골퍼 에릭 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하거나 온라인으로 사용해보십시오 .

3 인덱싱 된 -2 바이트 (인수에 대한 주먹 Aaron 번호 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


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- 인덱싱이 허용되는지 확실하지 않습니다.
Mr. Xcoder

@ Mr.Xcoder는 물론 수정되었습니다.
HyperNeutrino



0

파이썬 2 , 119104102101 바이트

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)

온라인으로 사용해보십시오!

@ovs 덕분에 -17 바이트 !

@notjagan 덕분에 -1 바이트

소인수 분해 알고리즘에 대한 크레딧은 Dennis 에게 갑니다 . 1- 색인.


참고 : 이것은 매우 느리고 비효율적입니다. 7보다 큰 입력은 설정 import sys하고 수행하지 않으면 충돌 sys.setrecursionlimit(100000)하지만 이론 상으로는 작동합니다.


f소인수의 합을 계산하는 함수 를 작성 하여 104 바이트
ovs

바이트 수를 추적하고 편집 내용에 주석을 달면 좋을 것입니다.
Titus

(f(n,k+1),k+f(n/k))[n%k<1]다른 -2 바이트의 경우. 이것은 더 느리게 만듭니다.
ovs

-1 바이트 전환함으로써 i+1에게 -~i.
notjagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.