x ^ 2가 7 ^ x-1을 나누는 x의 수


16

직무

숫자 세트가 x, 같은 그 x^2분할은 7^x-1.

당신의 임무는이 숫자를 찾는 것입니다. n을 입력하면 코드는이 규칙을 따르는 n 번째 숫자를 인쇄합니다.

예 1- 인덱스

In   Out
3    3
9    24
31   1140

관련 순서는 여기 에서 찾을 수 있습니다 .

규칙

가장 짧은 답변이 승자가 될 것입니다 *

표준 골프 규칙이 적용됩니다

허점 은 허용되지 않습니다

귀하의 답변은 0 또는 1 색인이 될 수 있습니다. 귀하의 답변에 기재하십시오


@nimi 나는 계획 할 때 이것을 적었고 결코 구현하지 않았다. 질문을 업데이트했습니다
george

한계는 n무엇입니까? 로 올바른 결과를 줄 수는 n=9있지만 n=10이미 문제를 일으 킵니다.
briantist

@briantist 더 높은 입력 값에 대해 잘못된 결과를 얻으면 대답이 잘못되었습니다. 시간이 오래 걸리는 경우 구현에 따라 달라질 수 있습니다.
mbomb007

오랜 시간이 걸리지 않습니다. n=1032를 준다; 정수 대신 double을 사용하기 시작하고 그 이후에는 mod가 잘못 되었기 때문입니다. :(
briantist

답변:


8

하스켈, 34 바이트

([x|x<-[1..],mod(7^x-1)(x^2)<1]!!)

0 기반 인덱싱을 사용합니다. 사용 예 : ([x|x<-[1..],mod(7^x-1)(x^2)<1]!!) 30-> 1140.

정의를 직접 구현 한 것입니다. 모든 숫자의 목록을 작성 x하고 일을 선택합니다 n.


5

Pyth , 10 바이트

e.f!%t^7Z*

정수의 입력을 받아서 하나의 인덱스 값을 인쇄하는 프로그램.

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

작동 원리

e.f!%t^7Z*     Program. Input: Q
e.f!%t^7Z*ZZQ  Implicit variable fill
               Implicitly print
e              the last
 .f         Q  of the first Q positive integers Z
     t^7Z      for which 7^Z - 1
    %          mod
         *ZZ   Z^2
   !           is zero

5

자바 스크립트 (ES7), 40 바이트

f=(n,i=1)=>n?f(n-!((7**++i-1)%i**2),i):i

JS가 정밀도를 잃기 때문에 정확도가 상당히 빠릅니다 7**19. 다음은 거의 임의의 정밀한 ES6 버전입니다.

f=(n,i=0)=>n?f(n-!(~-(s=++i*i,g=j=>j?g(j-1)*7%s:1)(i)%s),i):i

테스트 케이스 31의 경우 약 1 초 이내에 완료됩니다.

더 이상 접근 :

f=(n,i=0)=>n?f(n-!(~-(s=>g=j=>j?g(j-1)*7%s:1)(++i*i)(i)%s),i):i
f=(n,i=0)=>n?f(n-!(s=++i*i,g=(j,n=1)=>j?g(j-1,n*7%s):~-n%s)(i),i):i
f=(n,i=0)=>n?f(n-!(s=>g=(j,n=1)=>j?g(j-1,n*7%s):~-n%s)(++i*i)(i),i):i

4

05AB1E , 11 바이트

µ7Nm<NnÖiN¼

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

어떤 이유로 나는 ½일할 수 없거나 µ7Nm<NnÖ½NPyth에 묶여있을 것입니다.

µ           # Loop until the counter equals n.
 7Nm<       # Calc 7^x+1.
     Nn     # Calc x^2.
       Ö    # Check divisibility.
        iN¼ # If divisible, push current x and increment counter.
            # Implicit loop end.
            # Implicitly return top of stack (x)

.


네, Ö몇 달 동안 수정 목록에 문제가 있었지만 결코 다루지 않습니다. 어쨌든 스택이 비어 있으면 마지막 Nµ자동으로 출력 할 필요가 없습니다 N.
Emigna 2012 년

4

파이썬 2 , 48 46 바이트

-2 바이트의 @Dennis에게 감사드립니다!

f=lambda n,i=1:n and-~f(n-(~-7**i%i**2<1),i+1)

인수를 통해 입력을 받아 결과를 반환하는 인덱스 된 재귀 함수입니다.

온라인으로 사용해보십시오! (최종 테스트 사례를 실행할 수 있도록 재귀 제한이 증가했습니다.)

작동 원리

n원하는 인덱스이며 i계산 변수입니다.

발현 ~-7**i%i**2<1복귀 True(등가 1)하는 경우 i^2분할 7^i - 1하며 False(등가 0) 그렇지. 함수가 호출 될 때마다 표현식의 결과가에서 빼고 적중이 발견 될 때마다 n감소 n합니다. i또한 증가합니다.

의 단락 동작은 is 일 and때 반환 됨을 의미합니다 . 이것이 기본 사례입니다. 이 값에 도달하면 재귀가 중지 되고 원래 함수 호출이 현재 값을 반환합니다. 명시 적으로을 사용하는 대신 , 각 함수 호출 에 대해 호출 앞을 사용하여 증분이 수행되었다는 사실을 사용하여 수행됩니다 . 증분 시간은 필요에 따라을 제공 합니다.n00ii-~0 ii


1
(~-7**i%i**2<1)몇 바이트를 절약합니다.
Dennis

@ 데니스 물론! 감사.
TheBikingViking

3

파이썬 2 , 57 53 51 바이트

ETH 프로덕션 덕분에 -4 바이트
-2 바이트

i=0
g=input()
while g:i+=1;g-=~-7**i%i**2<1
print i

온라인으로 사용해보십시오!
시퀀스는 1- 인덱싱됩니다


@ETHproductions yep c :
Rod

괄호를 제거하면 테스트 케이스가 실패합니까 (7**i)? 나는 그것들을 제거했고 내가 시도한 것들에서 효과가있었습니다.
Yytsi

@TuukkaX 참으로, **보다 높은 우선 순위를 가지고 ~-
로드

2

파이썬 2, 57 바이트

값이 크면 시간 오래 걸립니다 . 또한 전체 목록을 필요 이상으로 더 많이 구축하기 때문에 많은 메모리를 사용합니다. 결과는 인덱스가 0입니다.

lambda n:[x for x in range(1,2**n+1)if(7**x-1)%x**2<1][n]

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


호기심에서 2**n+1상한선에 대한 증거가 있습니까?
Rod

@로드 내가 아는 것은 아니지만 50 개의 값 <5000이 있다고 생각하면 50보다 많은 것이 확실 2**50합니다. 사용할 수는 9**n+9있지만 훨씬 오래 걸립니다. 나는 f(20)얼마 전에 (와 함께 2**n+1) 달리기를 시작 했다 . 아직 완료되지 않았습니다.
mbomb007

나는 n 번째 항의 좋은 상한은 물론 시퀀스가 ​​무한하다는 증거가 없다고 생각합니다!
Greg Martin

2

수학, 43 바이트

현재이 바이트 수에서 세 가지 솔루션이 있습니다.

Nest[#+1//.x_/;!(x^2∣(7^x-1)):>x+1&,0,#]&
Nest[#+1//.x_/;Mod[7^x-1,x^2]>0:>x+1&,0,#]&
Nest[#+1//.x_:>x+Sign@Mod[7^x-1,x^2]&,0,#]&

첫번째 줄에서 x ^ 2와 (7 ^ x ... 사이의 문자는 무엇입니까? 그것은 파이프처럼 보이지만 더 짧습니다
Sefa

@Sefa 수학 "분할"기호의 유니 코드 문자이며 Mathematica에서 연산자로 사용됩니다 Divisible.
마틴 엔더

여기에 41 바이트가 있습니다 : Cases[Range[#^3],x_/;x^2∣(7^x-1)][[#]]&n ^ 3이 상한이라는 휴리스틱 주장에 근거합니다. 나는 이것에 대한 참으로 놀라운 증거를 발견했다.이 마진은 다음과 같이 포함하기에는 너무 좁다 :)
Kelly Lowder

2

PARI / GP , 42 바이트

꽤 직설적 인. 1- 색인이지만 쉽게 변경할 수 있습니다.

n->=k=1;while(n--,while((7^k++-1)%k^2,));k

또는

n->=k=1;for(i=2,n,while((7^k++-1)%k^2,));k


1

R, 35 바이트

이것은에서만 작동합니다 n<=8.

z=1:20;which(!(7^z-1)%%z^2)[scan()]

그러나 여기 n<=2550 바이트 동안 작동하는 더 긴 버전이 있습니다 .

z=1:1e6;which(gmp::as.bigz(7^z-1)%%z^2==0)[scan()]

이것이 8긴 int가 되었기 때문에 작동합니까 ?
조지

1
@george 네, R의 기본값은 32 비트 정수이므로 정확도가 떨어집니다. 코드의 두 번째 버전은 gmp임의의 큰 정수를 허용 하는 패키지를 사용합니다 . 그러나 위의 모든 것을 계산하기 위해 RAM이 빨리 부족 n=25합니다.
rturnbull

0

PHP, 47 49 바이트

while($n<$argv[1])$n+=(7**++$x-1)%$x**2<1;echo$x;

n <9에서만 작동합니다 ( 64 비트 7**9보다 큼 PHP_INT_MAX)

임의 길이의 정수를 사용하는 62 바이트 : (테스트되지 않음; 내 컴퓨터의 PHP에는 bcmath가 없습니다)

for($x=$n=1;$n<$argv[1];)$n+=bcpowmod(7,++$x,$x**2)==1;echo$x;

로 실행하십시오 php -nr '<code>' <n>.

의사 코드

implicit: $x = 0, $n = 0
while $n < first command line argument
    increment $x
    if equation is satisfied
        increment $n
print $x


0

클로저 , 83 바이트

(fn[n](nth(filter #(= 0(rem(-(reduce *(repeat % 7N))1)(* % %)))(iterate inc 1N))n))

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

이것은 1부터 시작하는 무한한 Java BigInteger 목록을 작성하고 정의에 의해 필터링합니다. 0부터 시작하는 색인을 사용 하여 필터링 된 목록에서 n 번째 값 을 선택 합니다.


0

펄 5, 35 바이트

글쎄, 이것은 누락되었으므로 여기 있습니다.

map{$_ if!((7**$_-1)%($_**2))}1..<>


0

Powershell, 너무 많은 바이트

그것이 가능하고 가능한지 확인하십시오.

[System.Linq.Enumerable]::Range(1,10000)|?{[System.Numerics.BigInteger]::Remainder([System.Numerics.BigInteger]::Pow(7,$_)-1,$_*$_) -eq 0}

0

펄 6 , 35 34 바이트

{grep({(7**$_-1)%%$_²},^∞)[$_]}

인덱스가 0입니다.

Brad Gilbert 덕분에 1 바이트를 줄였습니다.


grep은 서브 루틴이므로 공간을 제거한 후에 공간을 제거 할 수 있습니다{grep(…)}
Brad Gilbert b2gills

0

QBIC , 39 바이트

:{~(7^q-1)%(q^2)=0|b=b+1]~b=a|_Xq\q=q+1

QBasic 4.5에서 실행할 수 없었지만 QB64에서는 제대로 실행되는 것 같습니다. 설명 할 수없는 이유로 QBasic은 13,841,287,200을 144로 깨끗하게 나누기를 거부하지만 대신 -128을 남깁니다. 그런 다음 12 대신 12를이 시퀀스의 7 번째 항으로 반환합니다.

:{      get N from the command line, start an infinite DO-loop
~       IF
(7^q-1) Part 1 of the formula (Note that 'q' is set to 1 as QBIC starts)
%       Modulus
(q^2)   The second part
=0      has no remainder
|b=b+1  Then, register a 'hit'
]       END IF
~b=a    If we have scored N hits
|_Xq    Quit, printing the last used number (q)
\q=q+1  Else, increase q by 1. 
        [DO-loop and last IF are implicitly closed by QBIC]

0

Wonder , 28 바이트

@:^#0(!>@! % - ^7#0 1^#0 2)N

인덱스가 0입니다. 용법:

(@:^#0(!>@! % - ^7#0 1^#0 2)N)2

x^2로 나눌 수 있는지 여부를 결정하는 술어를 사용하여 자연수 목록에서 필터링합니다.7^x-1 다음 해당 목록에서 n 번째 항목을 가져옵니다.


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