일련의 숫자의 합이 주어진 값을 초과하는 가장 낮은 숫자를 계산하십시오. 3 3: 1

다음과 같이 정의 된 숫자의 무한 시퀀스가 ​​있다고 가정합니다.

1: 1 = 1
2: 1 + 2 = 3
3: 1 + 3 = 4
4: 1 + 2 + 4 = 7
5: 1 + 5 = 6
6: 1 + 2 + 3 + 6 = 12
7: 1 + 7 = 8
...

순서는 n1과를 포함한 제수의 합입니다 n.

x입력 으로 양의 정수가 주어지면 n보다 큰 결과를 생성하는 가장 낮은 숫자 를 계산하십시오 x.

테스트 사례

f(100) = 48, ∑ = 124
f(25000) = 7200, ∑ = 25389
f(5000000) = 1164240, ∑ = 5088960

예상 출력

프로그램은 다음과 같이 제수와 제수의 합을 모두 반환해야합니다 n.

$ ./challenge 100
48,124

규칙

이것은 코드 골프이므로 각 언어에서 가장 짧은 바이트 단위의 코드가 이깁니다.



답변

Brachylog , 9 바이트

∧;S?hf+S>

이 프로그램은 “output variable” .에서 입력을 받고 “input variable”로 출력합니다 ?.
온라인으로 사용해보십시오!

설명

∧;S?hf+S>
∧;S        There is a pair [N,S]
   ?       which equals the output
    h      such that its first element's
     f     factors'
      +    sum
       S   equals S,
        >  and is greater than the input.

암시 적 변수 N는 순서대로 증가하므로 가장 낮은 값이 출력에 사용됩니다.


답변

젤리 , 18 12 11 10 바이트

1Æs>¥#ḢṄÆs

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

Mr. Xcoder 덕분에 -1 바이트 !

작동 원리

1Æs>¥#ḢṄÆs - Main link. Argument: n (integer)
1   ¥#     - Find the first n integers where...
 Æs        -   the divisor sum
   >       -   is greater than the input
       Ṅ   - Print...
      Ḣ    -   the first element
        Æs - then print the divisor sum


답변

Wolfram Language (Mathematica) , 53 바이트

{#,f@#}&@@Select[Range[x=#]+1,(f=Tr@*Divisors)@#>x&]&

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

2와 x + 1 사이의 모든 값을 시도합니다. 여기서 x는 입력입니다.

(이 Select함수 {#,f@#}&는 작동하는 모든 값의 목록을 반환하지만 함수 는이 값을 모두 입력으로 사용하고 첫 번째 입력을 제외한 모든 입력을 무시합니다.)


답변

R , 71 바이트

function(x)for(n in 1:x){z=sum(which(n%%1:n==0));if(z>x)return(c(n,z))}

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


답변

껍질 , 12 11 바이트

§eVḟ>⁰moΣḊN

@Zgarb 덕분에 -1 바이트!

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


답변

R , 73 바이트

n=scan();while(1){d=(x=1:T)[!T%%x];if(sum(d)>n)break;T=T+1};cat(T,sum(d))

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

duckmayr에 의해 outgolfed .


답변

Japt , 15 바이트

[@<(V=Xâ x}a V]

시도 해봐


설명

정수의 묵시적 입력 U. []배열 래퍼입니다. 첫 번째 요소의 경우, @ }a정확한 값을 반환 할 때까지 계속 실행되고 매번 증가하는 정수 (0부터 시작)를 전달하고 해당 정수의 최종 값을 출력하는 함수입니다. â현재 정수 ( X) 의 제수를 가져 와서 x합산하고 그 결과는 variable에 할당됩니다 V. 보다 작은 지 <확인합니다 . 그러면 배열의 두 번째 요소는 그냥 입니다.UVV