펠 방정식의 기본 솔루션


28

정사각형이 아닌 양의 정수 n 이 주어지면 관련된 Pell 방정식 의 기본 해 (x,y) 를 찾으십시오.

x2ny2=1

세부

  • 기본적인 (x,y) 정수 쌍 x,y 의 식을 만족 x 최소한, 긍정적이다. ( 카운트되지 않은 사소한 해 (x,y)=(1,0) 는 항상 있습니다 .)
  • n 이 사각형이 아니라고 가정 할 수 있습니다 .

 n           x    y
 1           -    -
 2           3    2
 3           2    1
 4           -    -
 5           9    4
 6           5    2
 7           8    3
 8           3    1
 9           -    -
10          19    6
11          10    3
12           7    2
13         649    180
14          15    4
15           4    1
16           -    -
17          33    8
18          17    4
19         170    39
20           9    2
21          55    12
22         197    42
23          24    5
24           5    1
25           -    -
26          51    10
27          26    5
28         127    24
29        9801    1820
30          11    2
31        1520    273
32          17    3
33          23    4
34          35    6
35           6    1
36           -    -
37          73    12
38          37    6
39          25    4
40          19    3
41        2049    320
42          13    2
43        3482    531
44         199    30
45         161    24
46       24335    3588
47          48    7
48           7    1
49           -    -
50          99    14
51          50    7
52         649    90
53       66249    9100
54         485    66
55          89    12
56          15    2
57         151    20
58       19603    2574
59         530    69
60          31    4
61  1766319049    226153980
62          63    8
63           8    1
64           -    -
65         129    16
66          65    8
67       48842    5967
68          33    4
69        7775    936
70         251    30
71        3480    413
72          17    2
73     2281249    267000
74        3699    430
75          26    3
76       57799    6630
77         351    40
78          53    6
79          80    9
80           9    1
81           -    -
82         163    18
83          82    9
84          55    6
85      285769    30996
86       10405    1122
87          28    3
88         197    21
89      500001    53000
90          19    2
91        1574    165
92        1151    120
93       12151    1260
94     2143295    221064
95          39    4
96          49    5
97    62809633    6377352
98          99    10
99          10    1

관련 OEIS 시퀀스 : A002350 A002349 A033313 A033317


Pell 방정식에는 아무런 도전이 없다는 것에 놀랐습니다. 적어도 Project Euler 과제와 함께 사용하는 것을 기억합니다.
Kevin Cruijssen

@Fatalize " n을 가정 할 수 있습니다n 이 정사각형이 아니라고 . "테스트 케이스가 해당 imho를 생략하면 더 명확 해집니다.
Kevin Cruijssen

2
@KevinCruijssen 나는 그것을 고려했지만 일부 ns 를 생략하는 것이 더 혼란 스럽다고 생각했습니다 . (btw 나도 놀랐지 만 약 1 년 동안 샌드 박스 에서이 도전을 받았습니다)
놀랐지

답변:


16

Piet , 612 코덱

취하고 N 표준 입력. 공백으로 구분하여 y 를 출력 한 다음 x를 출력 합니다.

코덱 크기 1 : 코덱 크기가 1 인 펠의 방정식 프로그램

보기 편한 코덱 크기 4 코덱 크기가 1 인 펠의 방정식 프로그램

설명

입력 값 99에 대한 솔루션을 계산하는 프로그램을 보여주는 이 NPiet 추적을 확인하십시오 .

이 도전 이전에 Pell의 방정식에 대해 들어 본 적이 있는지 확실하지 않으므로 Wikipedia에서 다음을 모두 얻었습니다. 구체적으로, 세 가지 기사의이 섹션은 다음과 같습니다.

기본적으로 우리가하는 일은 다음과 같습니다.

  1. N 받기n표준 입력에서 을 .
  2. 찾기n그 사각형을 초과 할 때까지 카운터를 증가시켜n, 다음 번을 감소. (이것은 왼쪽 상단의 트레이스에서 볼 수있는 첫 번째 루프입니다.)
  3. 의 연속 분수에서 xy 를 계산하기위한 변수를 설정하십시오.n .
  4. xy 가 Pell의 방정식에 아직 맞는지 확인하십시오 . 만약 그렇다면, 값을 출력하고 (이것은 가로 방향으로 2/3 정도 아래쪽으로 분기) 종료 한 다음 (맨 왼쪽의 빨간색 블록으로 이동) 종료합니다.
  5. 그렇지 않은 경우 반복적으로 변수를 업데이트하고 4 단계로 돌아갑니다 (이것은 오른쪽으로 넓게 펼쳐지고 맨 아래로 다시 돌아가고 반쯤 걸리지 않습니다).

나는 무차별 대입 방식이 더 짧은 지 솔직히 알지 못하며 시도하지 않을 것입니다! 좋아, 그래서 나는 그것을 시도했다.


9

피에트 , 184 코덱

이것은 내가 쓰고 싶지 않은 다른 대안으로 내가 말한 무차별 대안 입니다. n = 13에 대한 솔루션을 계산하는 데 2 ​​분이 걸립니다. 실제로 n = 29 에서 시도하고 싶지는 않지만 모든 항목을 체크 아웃합니다. n 최대 20 하므로 올바른지 확신합니다.

다른 답변과 마찬가지로 표준 입력에서 n 을 가져 와서 y 를 출력 한 다음 x 을 공백으로 구분합니다.

코덱 크기 1 : 코덱 크기가 1 인 Pell의 방정식 프로그램 (브 루트-포스 변형)

보기 편한 코덱 크기 4 코덱 크기가 4 인 Pell의 방정식 프로그램 (브 루트-포스 변형)

설명

NPiet 추적 은 다음과 같습니다 은 입력 값 5에 대한 입니다.

이것은 xy 반복하여 가장 잔인한 힘 입니다. 다른 솔루션은 x 반복하고 y = 를 계산할 수 있습니다.y=x21n ,하지만 그들은겁쟁이 입니다.

시작에서 x=2y=1 이 확인 여부 xy 아직 방정식을 해결했다. 이 값이 있으면 (오른쪽 하단의 포크) 값을 출력하고 종료합니다.

그렇지 않은 경우 왼쪽으로 계속 진행되며, 여기서 yx 증가 합니다. (그러면 지그재그 길을 따라가는 방향이 약간 있습니다.)

이 마지막 비교는 경로가 왼쪽 중앙에서 분할되는 위치입니다. 같으면 x 는 증가하고 y 는 다시 1로 설정됩니다. 그리고 아직 해결책인지 다시 확인합니다.

여전히 사용 가능한 공백이 있으므로 프로그램을 확대하지 않고 해당 제곱근 계산을 통합 할 수 있는지 확인할 수 있습니다.


2
하하 난에 대해 동의 겁쟁이 D : 제곱근을 사용
flawr

6

Brachylog , 16 바이트

;1↔;Ċz×ᵐ-1∧Ċ√ᵐℕᵐ

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

설명

;1↔                Take the list [1, Input]
   ;Ċz             Zip it with a couple of two unknown variables: [[1,I],[Input,J]]
      ×ᵐ           Map multiply: [I, Input×J]
        -1         I - Input×J must be equal to 1
          ∧        (and)
           Ċ√ᵐ     We are looking for the square roots of these two unknown variables
              ℕᵐ   And they must be natural numbers
                   (implicit attempt to find values that match those constraints)

5

파리 / GP , 34 바이트

PARI / GP는이를 위해 거의 내장되어 있습니다 . 2 차 필드 Qquadunit기본 단위 를 제공합니다 ( Q(D),D은 IS판별필드. 즉,quadunit(4*n)Pell의 방정식x2ny2=±1합니다. 따라서 표준이1때 사각형을 가져와야합니다.

어떤 알고리즘을 사용하는지 모르지만 n 에 제곱이없는 경우에도 작동합니다 .

답 은 형식 x + y*w으로 표시되며, 여기서 wn .

n->(a=quadunit(4*n))*a^(norm(a)<0)

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


4

Wolfram Language (Mathematica) , 46 바이트

FindInstance[x^2-y^2#==1&&x>1,{x,y},Integers]&

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


1
이것이 항상 근본적인 해결책을 찾는 것이 확실 합니까?
그렉 마틴

@GregMartin 그렇습니다. 이것은 항상 첫 번째 (최소) 솔루션을 찾습니다. 이 경우 항상 {1,0}을 리턴합니다. 그렇기 때문에 x> 1을 선택하고 두 번째 (기본) 솔루션을
가져와야

1
나는 그것이 사실이기를 원하지만, 문서에 아무것도 표시하지 않는 것 같습니다 ....
Greg Martin

@GregMartin이 기능을 여러 번 사용해 왔으며 이미 어떻게 작동하는지 알고있었습니다. 내 유일한 관심사는 첫 번째 솔루션을 건너 뛰는 데 5 바이트가 더 들었습니다. 쉽게 프로그램을 작성하고 테스트 할 수 있습니다 (수백만 개의 결과를 확인하기 위해)
J42161217

4

05AB1E , 17 16 14 바이트

Kevin Cruijssen 덕분에 바이트를 절약했습니다 .
출력[y, x]

∞.Δn*>t©1%_}®‚

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

설명

∞                 # from the infinite list of numbers [1 ...]
 .Δ        }      # find the first number that returns true under
   n              # square
    *             # multiply with input
     >            # increment
      t©          # sqrt (and save to register as potential x)
        1%        # modulus 1
          _       # logical negation
            ®‚    # pair result (y) with register (x)

그리고 당신은 .. 다시 나를 이길뿐만 아니라 byter 17했지만,이 때문에 작동하지 않았다 Ų, 당신은 모두를 제거 할 수 소수와 도청됩니다 ..>. <어쨌든 ,과 뒤에 추가를 (아니, 쉼표의이 아니라입니다 같은; p) 바이트를 저장합니다.
Kevin Cruijssen

@ KevinCruijssen : 감사합니다! 그래, 나는 또한 Ų그것이 예상대로 작동하지 않는다는 것을 알기 위해 갔다 .
Emigna

4

자바 8, 74 73 72 바이트

n->{int x=1;var y=.1;for(;y%1>0;)y=Math.sqrt(-x*~++x/n);return x+" "+y;}

@Arnauld 덕분에 -1 바이트 . @ OlivierGrégoire
덕분에 -1 바이트 .

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

설명:

n->{                 // Method with double parameter and string return-type
  int x=1;           //  Integer `x`, starting at 1
  var y=.1;          //  Double `y`, starting at 0.1
  for(;y%1>0;)       //  Loop as long as `y` contains decimal digits:
    y=               //   Set `y` to:
      Math.sqrt(     //    The square-root of:
        -x*          //     Negative `x`, multiplied by
           ~++x      //     `(-x-2)` (or `-(x+1)-1)` to be exact)
                     //     (because we increase `x` by 1 first with `++x`)
               /n);  //     Divided by the input
  return x+" "+y;}   //  After the loop, return `x` and `y` with space-delimiter as result

1
72 바이트를 변화시킴으로써 n(A)에 double, 그리고 x내지 An int사실 재생 x*x-1같다 (-x-1)*(-x+1).
Olivier Grégoire

글쎄, 나는 사실 (x+1)*(x+1)-1-x*-(x+2)완전히 동일한 사실을 가지고 놀고 있습니다.
Olivier Grégoire

3

R, 66 56 54 53 52 47 45 바이트

완전한 프로그램

n=scan();while((x=(1+n*T^2)^.5)%%1)T=T+1;x;+T

@Giuseppe 덕분에 -1 -2

@Giuseppe & @Robin Ryder 덕분에 -7 -2 @JAD


1
.5대신 사용0.5
Giuseppe

5
46 바이트 . 가장 작은 값을 찾는 것은의 가장 작은 값 x을 찾는 것과 같습니다 y. 이 표현 때문에 2 바이트를 저장할 수 x의 관점에서하는 y다른 방법으로 주위보다 짧은이며, 사용하는 트릭을 사용하여 4 바이트 T1로 초기화된다
로빈 라이더

1
@RobinRyder 대신에 반환 +T할 때 확실 하지는 않지만 마지막에 a가 필요할 수 있습니다 . y==11TRUE
주세페

3
@ 주세페 잘 발견! 네 말이 맞아 그것은 47 바이트를
Robin Ryder

1
많은 수의 문제로 인해 n = 61 (거의 큰 테스트 사례)에서 실패한 것 같습니다. 언어 제한을 허용하는 것이 좋으며 예외는 아닙니다.
CriminallyVulgar

3

젤리 , 40 바이트

½©%1İ$<®‘¤$п¹;Ḋ$LḂ$?Ḟṭ@ṫ-ṚZæ.ʋ¥ƒØ.,U¤-ị

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

대체 Jelly는 x와 y가 클 때 덜 골프하지만 알고리즘 적으로 더 효율적입니다. 이것은 n의 제곱근에 가까운 정규 연속 분수의 수렴을 찾은 다음 Pell 방정식을 풀 수있는 것을 확인합니다. 이제 정규 연속 분수의 기간을 올바르게 찾습니다.

@TimPederick 덕분에 정수를 처리 해야하는 정수 기반 솔루션도 구현했습니다.

젤리 , 68 바이트

U×_ƭ/;²®_$÷2ị$}ʋ¥µ;+®Æ½W¤:/$$
¹©Æ½Ø.;ÇƬṪ€F¹;Ḋ$LḂ$?ṭ@ṫ-ṚZæ.ʋ¥ƒØ.,U¤-ị

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

예를 들어, 1234567890의 해는 분자와 분모에 대해 각각 1936과 1932 자리입니다.


좋은! 나는 대답에서 같은 접근 방식을 취했습니다. Jelly를 읽지 못하므로 61에 왜 문제가 있는지 잘 모르겠습니다. 각 수렴을 정수 쌍 (분자 및 분모)으로 저장하고 있습니까?
Tim Pederick

@TimPederick 예. 문제가 어디에서 발생하는지 확실하지 않음
Nick Kennedy

나는 이것이 어떻게 작동하는지 배우려고 그것을 디버그 할 수 있었지만, 나는 단지 내 머리를 감쌀 수 없었다! (이 경우 내가 제안 할 수 있습니다 만 일이 있기 때문에, 어떤 수레의 바닥을 복용 하지 모든 중간 값 어쨌든 정수로 나와야 광산과 동일한 알고리즘을 사용).
팀 Pederick

@TimPederick 부동 소수점 부정확했습니다. 이제는 기간에 도달하면 계속되는 분수의 추가 계속을 찾지 않도록했습니다. 이것은 최대 150 개까지 작동하지만 다시 한 번 151과 같은 부동 소수점 정확도 오류가 발생한다고 생각합니다.
Nick Kennedy

@TimPederick은 정수 산술로 수행되는 수렴이 아니라 문제가되는 연속 분수의 생성이기도합니다.
Nick Kennedy


2

TI-BASIC,  44  42 41 바이트

Ans→N:"√(N⁻¹(X²-1→Y₁:1→X:Repeat not(fPart(Ans:X+1→X:Y₁:End:{X,Ans


(엑스,와이)

방정식 사용합니다와이=엑스21엑스2
(엑스,와이)와이모드1=0

예 :

6
               6
prgmCDGF12
           {5 2}
10
              10
prgmCDGF12
          {19 6}
13
              13
prgmCDGF12
       {649 180}

설명:

Ans→N:"√(N⁻¹(X²+1→Y₁:1→X:Repeat not(fPart(Ans:X+1→X:Y₁:End:{X,Ans  ;full logic

Ans→N                                                              ;store the input in "N"
      "√(N⁻¹(X²+1→Y₁                                               ;store the aforementioned
                                                                   ; equation into the first
                                                                   ; function variable
                     1→X                                           ;store 1 in "X"
                         Repeat not(fPart(Ans          End         ;loop until "Ans" is
                                                                   ; an integer
                                              X+1→X                ;increment "X" by 1
                                                    Y₁             ;evaluate the function
                                                                   ; stored in this variable
                                                                   ; at "X" and leave the
                                                                   ; result in "Ans"
                                                           {X,Ans  ;create a list whose
                                                                   ; values contain "X" and
                                                                   ; "Ans" and leave it in
                                                                   ; "Ans"
                                                                   ;implicitly print "Ans"

참고 : TI-BASIC은 토큰 화 된 언어입니다. 문자 수는 바이트 수와 같지 않습니다 .


2

MATL , 17 바이트

`@:Ut!G*-!1=&fts~

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

설명

코드는 계속 증가 카운터 (K) 각각에 대해, ...를 = 1, 2, 3 (K) , 용액 , X , Y가 1 ≤ xk , 1 ≤ yk 인 를 검색합니다. 솔루션이 발견되면 프로세스.

이 절차는 정확히 하나의 솔루션을 찾도록 보장되는데, 이것이 바로 근본적인 솔루션입니다. 이유를 확인하려면

  1. 모든 솔루션 x > 0, yn > 1에 대한 > 0은 x > y를 충족시킵니다 .
  2. 경우에 X , Y는 용액이고 , X ', Y는 '다른 용액 후 필요하다 XX '는 YY '.

1과 2의 결과로

  • 주어진 k 에서 프로 시저가 중지되면 오직 하나만 솔루션은 존재 K 그들 중 하나가 이전에 발견 된 것 두 가지 솔루션이 마치 때문에, 그 과정은 작은으로 정지했을 K .
  • 이 솔루션은 근본적인 솔루션입니다. 다시 x 가 더 작은 솔루션 이 있으면 이전에 발견 되었기 때문입니다.

`       % Do...while
  @:U   %   Push row vector [1^2, 2^2, ..., k^2] where k is the iteration index
  t!    %   Duplicate and transpose. Gives the column vector [1^2; 2^2; ...; k^2]
  G*    %   Multiply by input n, element-wise. Gives [n*1^2; n*2^2; ...; n*k^2]
  -     %   Subtract with broadcast. Gives a square matrix of size n
  !     %   Transpose, so that x corresponds to row index and y to column index
  1=&f  %   Push row and column indices of all entries that equal 1. There can
        %   only be (a) zero such entries, in which case the results are [], [],
        %   or (b) one such entry, in which case the results are the solution x, y
  ts~   %   Duplicate, sum, negate. This gives 1 in case (a) or 0 in case (b)
        % End (implicit). Proceed with next iteration if top of the stack is true;
        % that is, if no solution was found.
        % Display (implicit). The stack contains copies of [], and x, y on top.
        % The empty array [] is not displayed


2

하스켈 , 46 바이트

간단한 무차별 대입 검색. 이것은 근본적인 해결책이라는 사실을 이용합니다.(엑스,와이) 만족스러운 엑스2와이2=1 있어야합니다 와이엑스.

f n=[(x,y)|x<-[1..],y<-[1..x],x^2-n*y^2==1]!!0

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


변경해야 할 것 같습니다 nx에서 y<-[1..n]당신이 계산할 수 있습니다 f 13.
Christian Sievers

@ChristianSievers 지적 해 주셔서 감사합니다. 수정했습니다!
flawr



1

껍질 , 12 바이트

ḟΛ¤ȯ=→*⁰□π2N

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

설명

ḟΛ¤ȯ=→*⁰□π2N  Input is n, accessed through ⁰.
           N  Natural numbers: [1,2,3,4,..
         π2   2-tuples, ordered by sum: [[1,1],[1,2],[2,1],[1,3],[2,2],..
ḟ             Find the first that satisfies this:
 Λ             All adjacent pairs x,y satisfy this:
  ¤     □       Square both: x²,y²
   ȯ  *⁰        Multiply second number by n: x²,ny²
     →          Increment second number: x²,ny²+1
    =           These are equal.

1

MathGolf , 12 바이트

ökî²*)_°▼Þ√î

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

출력 형식과 관련하여 Hail Mary를 던지고 있습니다. 허용되지 않으면 1 바이트 길이의 솔루션이 있습니다. 출력 형식은입니다 x.0y. 여기서 .0두 숫자 사이의 구분 기호입니다.

설명

ö       ▼      do-while-true with popping
 k             read integer from input
  î²           index of current loop (1-based) squared
    *          multiply the two
     )         increment (gives the potential x candidate
      _        duplicate TOS
       °       is perfect square
         Þ     discard everything but TOS
          √    square root
           î   index of previous loop (1-based)

나는 Emigna의 05AB1E 답변에서 영감을 얻었지만 몇 가지 개선 사항을 찾을 수있었습니다. 선택한 구분 기호가 허용되지 않으면 바이트 수 13의 마지막 바이트 앞에 공백을 추가하십시오.


1

APL (NARS), 906 바이트

r←sqrti w;i;c;m
m←⎕ct⋄⎕ct←0⋄r←1⋄→3×⍳w≤3⋄r←2⋄→3×⍳w≤8⋄r←w÷2⋄c←0
i←⌊(2×r)÷⍨w+r×r⋄→3×⍳1≠×r-i⋄r←i⋄c+←1⋄→2×⍳c<900⋄r←⍬
⎕ct←m

r←pell w;a0;a;p;q2;p2;t;q;P;P1;Q;c;m
   r←⍬⋄→0×⍳w≤0⋄a0←a←sqrti w⋄→0×⍳a≡⍬⋄m←⎕ct⋄⎕ct←0⋄Q←p←1⋄c←P←P1←q2←p2←0⋄q←÷a
L: t←p2+a×p⋄p2←p⋄p←t
   t←q2+a×q
   :if c≠0⋄q2←q⋄:endif
   q←t           
   P←(a×Q)-P
   →Z×⍳Q=0⋄Q←Q÷⍨w-P×P
   →Z×⍳Q=0⋄a←⌊Q÷⍨a0+P
   c+←1⋄→L×⍳(1≠Qׯ1*c)∧c<10000
   r←p,q
   :if c=10000⋄r←⍬⋄:endif
Z: ⎕ct←m

위의 바닥 제곱근을 발견하는 sqrti 함수와 pell 함수는 Zilde를 오류로 반환하고 http://mathworld.wolfram.com/PellEquation.html 페이지를 기반으로하는 두 가지 함수 가 있습니다. 숫자 trhu의 sqrt는 분수를 계속하고 (뉴턴 방법을 사용하여 sqrt를 알기 위해 하나의 알고리즘을 사용하더라도) p와 q를 찾으면 중지합니다.

 p^2-w*q^2=1=((-1)^c)*Qnext

테스트:

  ⎕fmt pell 1x
┌0─┐
│ 0│
└~─┘
  ⎕fmt pell 2x
┌2───┐
│ 3 2│
└~───┘
  ⎕fmt pell 3x
┌2───┐
│ 2 1│
└~───┘
  ⎕fmt pell 5x
┌2───┐
│ 9 4│
└~───┘
  ⎕fmt pell 61x
┌2────────────────────┐
│ 1766319049 226153980│
└~────────────────────┘
  ⎕fmt pell 4x
┌0─┐
│ 0│
└~─┘
  ⎕fmt pell 7373x
┌2───────────────────────────────────────────────────────────┐
│ 146386147086753607603444659849 1704817376311393106805466060│
└~───────────────────────────────────────────────────────────┘
  ⎕fmt pell 1000000000000000000000000000002x
┌2────────────────────────────────────────────────┐
│ 1000000000000000000000000000001 1000000000000000│
└~────────────────────────────────────────────────┘

sqrti 함수의 루프에는 사이클에 대한 제한이 있으며 Pell 함수의 루프에는 사이클에 대한 제한이 있습니다. 가능한 경우의 숫자가 너무 크거나 수렴되지 않습니다 ... (sqrti인지 알 수 없음) 가능한 모든 입력을 수렴하고 동일한 Pell 기능을 수렴하십시오)



0

Pyth, 15 바이트

fsIJ@ct*TTQ2 2J

여기에서 온라인으로 사용해보십시오 . x그런 다음 출력은 y개행으로 분리됩니다.



0

> <> , 45 바이트

11v
+$\~:1
:}/!?:-1v?=1-*}:{*:@:{*:
$  naon;>

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

브 루트 포스 알고리즘에서 검색 x=2하여, 위쪽 y=x-1및 증분 각 루프 감소시키는 x경우 y에 도달하면 0이 출력되고 x다음 y개행로 분리.



0

파이썬 3 , 75 바이트

lambda i:next((x,y)for x in range(2,i**i)for y in range(x)if~-x**2==i*y**2)

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

설명

무차별 대입 사용

엑스<나는나는
Pell의 방정식에 대한 기본 솔루션의 명확한 상한 보다 훨씬 낮은 상한 검색 범위로
엑스나는!

이 코드는 Python 2에서도 실행됩니다. 그러나 Python 2의 range () 함수는 Python 3과 같은 생성기 대신 목록을 생성하므로 엄청나게 비효율적입니다.


초기 시간과 메모리를 사용하면 반복자 대신 목록 이해를 사용하고 다음과 같이 3 바이트를 절약 할 수 있습니다.

파이썬 3 , 72 바이트

lambda i:[(x,y)for x in range(i**i)for y in range(x)if~-x**2==i*y**2][1]

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


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