원시 피타고라스 트리플


29

( 관련 )

피타고라스 트리플 리스트이다 (a, b, c)만족하는 식 2 + B 2 C = 2 .

원시 피타고라스 트리플 (PPT)는 하나이고 a, b그리고 c모두 서로 소가 (세 가지 구성 요소 사이의 유일한 공약수가 예이다 1). 예를 들어, (3, 4, 5)오른쪽 삼각형은 유명한 원시 피타고라스 트리플입니다.

도전

  • 입력이 주어지면 PPT를 n출력합니다 n. 또는,
  • 입력이 주어지면 n첫 번째 nPPT를 출력하십시오 .

이 PPT를 순서대로 정렬하여 목록을 정돈하는 방법은 여러 가지가 있습니다 n. 알고리즘이 가능한 모든 고유 한 PPT를 생성 할 수 있음을 증명할 수있는 한 (공식적으로는 괜찮음) 원하는 순서를 선택할 수 있습니다. 예를 들어, 코드가 모두 출력되지해야 (3,4,5)하고 (4,3,5), 하나 또는 다른하십시오 - 사람들은 같은 삼중의 중복되기 때문에.

마찬가지로 사용중인 코드를 명시하는 한 코드가 0 또는 1 인덱싱되는지 여부는 좋습니다.

아래의 예를 들어, 내가 출력, 하나의 색인을 사용하고 n작은 의해 번째 PPT 및 순서를 c적은 다음, a가장 작은 다음, b.

n | output
1 | (3, 4, 5)
2 | (5, 12, 13)
5 | (20, 21, 29)
12| (48, 55, 73)

규칙

  • 입력 및 출력은 편리한 형식으로 제공 될 수 있습니다 .
  • 제출시, 항목의 주문 방법 및 항목의 색인이 0인지 색인인지를 알려주십시오.
  • 선택한 주문으로 중복 상품을 만들 수 없습니다.
  • 전체 프로그램 또는 기능이 허용됩니다. 함수 인 경우 출력하지 않고 출력을 반환 할 수 있습니다.
  • 가능하면 다른 사람들이 귀하의 코드를 시험해 볼 수 있도록 온라인 테스트 환경에 대한 링크를 포함하십시오!
  • 표준 허점 은 금지되어 있습니다.
  • 이것은 이므로 모든 일반적인 골프 규칙이 적용되며 가장 짧은 코드 (바이트)가 이깁니다.



우리가 지원해야하는 가장 높은 입력은 무엇입니까? 우리가 선택한 언어의 기능에 적합하다고 가정 할 수 있습니까?
Mr. Xcoder

1
@ Mr.Xcoder 예; 허점악용 하기 위해 사용하지 않는 한 (예를 들어, 언어는 1 비트 숫자 만 지원) 표준 안전 가정 입니다.
AdmBorkBork

2
나는 나의 질문에 대한 답을 찾았다 : a와 b는 반드시 coprime이어야하고 이것으로 충분하다 proofwiki.org/wiki/…
edc65

답변:


12

젤리 , 27 25 바이트

Jonathan Allan 덕분에 2 바이트.

²IH;Pµ;ÆḊ
+2ḶḤ‘Œcg/ÐṂÇ€Ṣḣ

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

를 증가시킨 다음 정렬 하여 첫 번째 n1- 인덱스 트리플을 출력합니다 .[b, a, c]ba

Wikipedia 의 알고리즘을 사용합니다 .

a = mn, b = (m²-n²) / 2, c = (m² + n²) / 2

이것은 모든 홀수 정수의 모든 고유 한 coprime 쌍에 대해 모든 원시 트리플을 생성합니다 m > n > 0.

설명

+2ḶḤ‘Œcg/ÐṂÇ€Ṣḣ    Main link. Argument: n
+2                   Add 2 to n, to get enough results.
  Ḷ                  Get integers [0, 1, ..., n+1].
   Ḥ                 Double to get [0, 2, ..., 2n+2].
    ‘                Increment to get [1, 3, ..., 2n+3].
     Œc              Get all ordered pairs [[1, 3], [1, 5], ..., [2n+1, 2n+3]].
       g/            GCD of each pair.
         ÐṂ          Grab the pairs with minimal GCD (which is 1).
           ǀ        Call the helper link on each pair to get the triples.
             Ṣ       Sort the triples first by a, then by b, then by c.
              ḣ      Get the last n.

²IH;Pµ;ÆḊ    Helper link. Argument: pair [m, n]
²              Square to get [m², n²].
 I             Increments: get [m²-n²].
  H            Halve: get [(m²-n²)/2], i.e. [b].
    P          Product: get mn, i.e. a.
   ;           Append to get [b, a].
     µ         Begin a new monadic chain with argument [b, a].
       ÆḊ      Get the length of the vector, i.e. c.
      ;        Append to get [b, a, c].

정말 좋은 설명입니다. 감사!
AdmBorkBork

g/Ị$Ðf-> g/ÐṂ2 바이트를 저장하려면 (최소 gcd가 1이고 항상 최소 하나의 해당 항목이 있기 때문에)
Jonathan Allan

다른 바이트는 대체함으로써 (덜 효율적 있음)에 저장 될 수 +2ḶḤ‘Œc²Rm2Œc- 스크랩이 그것의 입력 작업 습관 1:(
조나단 알란

@JonathanAllan 최소한 하나 감사합니다. 나는 2 바이트 범위를 많이 시도했지만 불행히도 아무도 충분히 크지 않았습니다. ( ²ḶḤ‘Œc내가 생각한 첫 번째 중 하나였다.)
PurkkaKoodari

8

MATL , 36 바이트

`@:Ut&+wmR&fZd1Mhw/vXutnGE<]GY)t&2|h

입력은 1 기반입니다. 출력 순서는 각 트리플이 정확히 한 번만 나타나는 것을 보장합니다. 순서는 다음과 같습니다. 설명은 프로그램이 어떻게 작동하는지 조금 탐구해야합니다.

코드 k는에서 시작하여 루프에서 카운터 를 계속 증가시킵니다 1. 각각에 대해 k이 모든 쌍을 생성 a = 1,...,k, b = 1,...,k, a < b, 및 픽과 트리플 피타고라스을주는 것들 c <= k. 쌍은 증가하는 순서로 얻어지는 b다음, a.

그런 다음 각 쌍을 gcd로 나눕니다. 결과적으로 (복제 된) 쌍은 2 열 행렬로 배열됩니다. 이 행렬은 더 작은 값에 대해 얻은 누적 결과를 포함하는 유사한 행렬과 수직으로 연결됩니다 k. 그러면 매트릭스의 행이 안정적으로 중복 제거됩니다. 가지 유형의 복제본 이 제거됩니다 .

  1. 전류에 대해 두 번 이상 발견 된 쌍 k(예 : gcd로 나눌 3,4때도 발생 6,8)

  2. 이미 더 작은 쌍을 찾았습니다 k.

실제로 각 반복 k은 이전 반복에서 이미 찾은 모든 쌍을 찾습니다. 그러나 다른 순서로 찾을 수 있습니다 . 예를 들어 k=25트리플 7,24,25을 찾지 만 20,21,29(을 c초과 할 수 없기 때문에 k) 찾지 않습니다 . 나중에 반복 k=29은 두 가지를 모두 발견하지만 20,21,29 이전 과 함께 7,24,25(순서가 증가 b하고 a) 증가 합니다. 그렇기 때문에 최신에 대한 모든 쌍을 유지하는 대신 k이전 쌍에 추가하고 안정적으로 중복 제거합니다. 그렇게하면 모든 입력에 대해 순서가 동일합니다 n.

위의 내용은 각 원시 피타고라스 트리플이 결국 나타나고 한 번만 나타납니다. 입력의 경우, 적어도 유효한 트리플이 얻어 지면 n루프 오버 k가 완료됩니다 n. 그리고 n세 번째 트리플이 출력됩니다.

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

또는이 수정 된 코드를 사용하여 첫 번째 n트리플을보십시오.

`@:Ut&+wmR&fZd1Mhw/vXutnGE<]G:Y)tU&2sX^h

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


1
좋은 설명입니다.
AdmBorkBork


5

젤리 , 19 18 바이트

*g/²_/
4*œc3UṢÇÐḟḣ

프로그램은 1 기반 인덱스 n을 취하고 첫 번째 n PPT [c, b, a] 를 사전 순으로 인쇄합니다.

이것은 O (64 n ) 솔루션이므로 TIO는 입력 4 이상 에서 질식합니다 . 더 빨리 만들기 위해 노력하겠습니다.

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

대체 버전 O (n 3 ), 아마도 유효

찾기 위해 N 번째 - 삼중 [C , N , B, N 하는 N ] - 위의 용액하는 것으로 가정 C N ≤ 4 N 확인하기 쉽다. 그러나, A020882는 것을 증명 C N ~ 2πn이 때문에 존재하는 K 되도록 C , N ≤ KN 모든 N을 .

k = 7을 취할 수 있다면 아래 솔루션도 유효합니다 (그리고 훨씬 빠릅니다).

*g/²_/
×7œc3UṢÇÐḟḣ

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

작동 원리

4*œc3UṢÇÐḟḣ  Main link. Argument: n

4*           Compute 4**n, the n-th power of 4.
  œc3        Take all 3-combinations of the set {1, ..., 4**n}, each sorted in
             ascending order. The triples themselves are sorted lexicographically.
     U       Upend; reverse each triple [a, b, c], yielding [c, b, a].
      Ṣ      Sort the descending triples lexicographically. This ensures that their
             order is independent of n.
       ÇÐḟ   Keep only triples for which the helper link returns a falsy value.
          ḣ  Dyadic head; take the first n triples.


*g/²_/       Helper link. Argument: [c, b, a]

 g/          Reduce [c, b, a] by greatest common divisor, yielding g.
*            Elevate the integers to that power, computing [c**g, b**g, a**g].
   ²         Square, yielding [c**2g, b**2g, a**2g].
    _/       Reduce by subtraction, yielding c**2g - b**2g - a**2g.
             Fermat's Last Theorem assures that this difference will be non-zero
             whenever g > 1, so this yields 0 iff g = 1 and c² = a² = b².

4

자바 스크립트 (ES7) 106 105 103 바이트

N 번째 PPT를 출력합니다. 결과는 1 색인화되고 b 값으로 정렬됩니다 .

n=>(g=(a,b)=>b?g(b,a%b):a,F=a=>(x=a*a+b*b,c=x**.5|0)*c-x*g(a,g(b,c))||--n?F(a-b?a+1:!++b):[a,b,c])(b=1)

데모


4

MATL , 63 바이트

3lvi:"t"[HlHllO;aOlOHl]!@Y*2eh]]!XuGY)&*tt[lO;Oa]*ssD2)ED2Xy*ss

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

골프 수업은 끔찍하게 잘못되었습니다. 골프를 더 잘하는 방법이 있는지 궁금하기 때문에 어쨌든 게시하고 있습니다.

나는 이것을 유클리드의 공식과 조합 하여이 위키 백과 페이지를 기반으로하여 시행 착오 방식이 아닌 모든 트리플을 건설적으로 생성했습니다.

먼저 홀수 coprime 쌍이 삼항 트리로 생성됩니다. 이것은 대부분의 바이트 수를 고려하여 큰 행렬 곱셈으로 수행됩니다. 그런 다음 유클리드의 공식이 아마도 매우 낭비되는 방식으로 적용됩니다. 누구 든지이 두 부분에 대한 팁이 있으면 듣고 싶습니다.

바이트를 절약하기 위해이 프로그램은 대신 입력과 같은 깊이의 트리를 생성합니다 log3(n). 또한 자식은 트리의 마지막 행이 아닌 각 행에 대해 생성 된 다음로 다시 필터링됩니다 Xu. 효율적인 건설적인 접근 방식을 위해 너무 많은.

3lv % Push root node of ternary tree
i:" % Generate a tree of depth of input (WAY too large, but golfy)
t"  % loop over all nodes (golfier than looping over last tree row)
[HlHllO;aOlOHl]! % Matrix to generate three children of current node
@Y* % Multiply with current node to get children
2e  % Reshape to get node pairs
h]] % Append to tree, exit loops
!Xu % Remove duplicates (more efficient to do it before last ] but golfier this way)
GY) % Select n-th odd coprime pair
&*tt % Multiply with it's own transpose to get [m²,m*n;m*n,n²]
[lO;Oa]*ssD % Sum of matrix multiplication = m²-n² to get a
2)ED % Second element doubled for b=2mn
2Xy*ss % Sum of matrix multiplication with identify matrix to get c=m²+n²

3

하스켈, 65 바이트

([(a,b,c)|c<-[5..],b<-[1..c],gcd c b<2,a<-[1..b],a^2+b^2==c^2]!!)

0 기반 인덱싱 A는 주어진 들어 c, b최대 실행 ca최대 b그래서 c > b > a항상 보유하고 있습니다.

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


3

파이썬, 67 50 48 46 바이트

위키 백과에있는 공식을 사용하면

a=m*n, b=(m^2-n^2)/2, c=(m^2+n^2)/2

어디에 m>n>0, m그리고 ncoprimes와 홀수입니다. 여기 코드가 있습니다

lambda n:[3+2*n,~-(3+2*n)**2-1/2,-~(3+2*n)**2/2]

@Martin Ender 덕분에 -17 바이트

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

n방정식 에서 변수 의 값을 항상 1로 유지함으로써 작동합니다 . 이는 m단순히 다른 홀수 값 임을 의미합니다 .이 경우 기본 피타고라스 트리플의 수는 3+2*n어디 n입니까? 이를 통해 모든 n값에 대해 1의 값을 가정 할 수 있습니다 .


PPCG에 오신 것을 환영합니다! 명명되지 않은 함수는 훌륭하므로 람다를 할당 할 필요가 없습니다 a(그렇다면 두 공간을 제거 할 수 있습니다). 또한 왜 당신 print이 거기 있는지 확실하지 않습니다 . 람다 자체에서 값을 반환 할 수 있습니다.
Martin Ender

"알고리즘이 가능한 모든 고유 한 PPT를 생성 할 수 있음을 증명할 수 있습니다. 그러나이 방법은 빗변이 다리보다 1 더 긴 것을 생성합니다. 예를 들어 8,15,17을 생성하지 않습니다.
Rosie F

2

껍질 , 18 바이트

↑üOf§=F⌋ȯ¬Ḟ-m□ΠR3N

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

Dennis에서 영감을 얻은 Zgarb에게 -4 바이트 감사

매우 느린 무차별 접근 방식은 1보다 큰 입력에 대해서는 TIO에서 작동하지 않습니다. 여기서는 b≤200으로 제한되어보다 관리하기 쉬운 버전을 사용해 볼 수 있습니다

설명

↑üOf§=F⌋ȯ¬Ḟ-m□ΠR3N
              ΠR3N   Get all triples of natural numbers
   f                 Keep only those triples where
      F⌋                their GCD
    §=                  is equal to
        ȯ¬Ḟ-m□          the logical negation of c²-b²-a²
 üO                  Remove duplicates by their sorted version
↑                    Get the first <input> values of this sequence

맵과 필터를 결합하여 20 바이트 를 더 느리게합니다.
Zgarb

@Zgarb 감사합니다! 나는 여분의 바이트를 골프를
Leo

Dennis의 Jelly 답변에서 빼기 트릭을 사용하여 18 바이트 .
Zgarb

@Zgarb 좋은! 의심 스럽지만 동일한 두 개의 트리플이있을 수 c있습니까? 이 경우이 솔루션을 수정해야합니다
Leo

흠, 실제로 같은 트리플이 많이 c있습니다. 이 18 바이트 솔루션 (Dennis의 또 다른 트릭을 사용)은 관계없이 작동합니다.
Zgarb

1

Mathematica, 89 바이트

c로 주문한 Solve 사용

SortBy[{a,b,c}/.Solve[a^2+b^2==c^2&&GCD[a,b]==1&&0<a<b<c<9#,{a,b,c},Integers],Last][[#]]&

Mathematica, 124 바이트

(s={};Table[If[IntegerQ[c=Sqrt[a^2+b^2]]&&GCD[a,b]==1,AppendTo[s,{a,b,c}]],{a,9#},{b,9#}];SortBy[Union[Sort/@s],Last][[#]])&

1

R (+ 숫자), 88 바이트

n=scan();while(all(nrow(T)<n))T=numbers::pythagorean_triples(5,5+(F<-F+1));T[n,3:5]

내장을 사용하여 숫자를 생성하려면 실제로 원하는 것을 얻는 데 놀라운 양의 바이트가 필요합니다. 내장 매크로는 두 개의 인수를 c1하고 c2, 그리고이 그 세 쌍둥이를 반환합니다 c >= c1 & c <= c2. 이것은 n-삼중 항 에 도달하는 것을 약간 성가 시게합니다 . c2출력이 충분한 행이 될 때까지 한 번에 1 씩 계속 증가 합니다.


1

PHP , 273 바이트

function t($n){$x=[];for($c=3;;$c++)for($b=2;$b<$c;$b++)for($a=2;$a<$b;$a++)if(d($a,$b,$c)&&$a**2+$b**2==$c**2){$x[]=[$a,$b,$c];if(--$n==0)return $x;}}function d($a,$b,$c){for($i=2;$i<$a;$i++)if($a%$i==0&&$b%$i==0||$a%$i==0&&$c%$i==0||$b%$i==0&&$c%$i==0)return 0;return 1;}
  • t($n) 순서대로 [a, b, c]의 배열을 반환 a < b < c
  • 0부터 시작하는 인덱스를 반환

온라인으로 사용해보십시오! (코드도 읽을 수 있습니다)


1

C, 158 바이트

나는 이것이 나의 첫 번째 제출이라고 생각하므로 아마도 더 잘 할 수 있습니다.

#include<stdio.h>
void f(n){int i=0,j=3,k,l;while(1){for(k=1;k<j;k++){for(l=k;l<j;l++){if(j*j==k*k+l*l)i++;if(i==n){printf("%d %d %d",j,k,l);return;}}}j++;};}

그리고 ungolfed 버전 :

#include <stdio.h>

void f(n)
{
  int i=0, j=3, k, l;
  while (1) {
    for (k=1; k<j; k++) {
      for (l=k; l<j; l++) {
        if (j*j==k*k+l*l)
          i++;
        if (i==n) {
          printf("%d %d %d\n", j, k, l);
          return;
        }
      }
    }
    j++;
  };
}

void main()
{
  int i;

  scanf("%d", &i);

  f(i);
  printf("\n");
}

들면 2 + B 2 C = 2 , 순서가 증가하고 C가 다음 증가 .

어떠한 회 동일한 PPT 없을 수 B가 좋은 초원에있다 알고리즘이다.


PPCG에 오신 것을 환영합니다!
JAD

1

젤리 , 27 25 바이트

⁽0(ḃs
Ɠḃd2Ḥ’×€Ç
3r5DṭÇæ×/

이것은 @AndersKaseorg의 Haskell answer의 트리 접근 방식을 다른 분기 순서로 구현 한 것입니다. 이 프로그램은 0 기반 인덱싱을 사용하고 STDIN에서 입력을받습니다.

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

배경

Wikipedia 페이지 의 원시 피타고라스 삼중트리에서 언급했듯이 행 벡터 (3, 4, 5) 를 특정 속성을 가진 행렬로 반복적으로 왼쪽 곱하여 모든 PPT를 얻을 수 있습니다 .

각 반복에서 이전 결과에 A , B 또는 C를 곱하여 다음과 같이 선택할 수 있습니다.

행렬

경우 , BC가 고정되어, 각각 PPT 고유 방식으로 얻을 수있다.

작동 원리

3r5DṭÇæ×/  Main link. No arguments.

3          Set the argument and the return value to 3.
 r5        Create a range from 3 to 5, i.e., [3, 4, 5].
   D       Decimal; convert each integer to base 10, yielding [[3], [4], [5]].
     Ç     Call the second helper link with argument 3.
    ṭ      Tack; append [[3], [4], [5]] to the result.
      æ×/  Reduce by matrix multiplication.
Ɠḃd2Ḥ’×€Ç  Second helper link. Argument: 3

Ɠ          Read and evaluate one line of input, yielding an integer n.
 ḃ         Convert n to bijective base 3.
  d2       Divmod 2; map each digit d to [d/2, d%2].
    Ḥ      Unhalve; multiply the results by 2.
     ’     Decrement the doubled results.
           The previous four atoms apply the following mapping to the digits.
               1 -> [0, 1] -> [0, 2] -> [-1,  1]
               2 -> [1, 0] -> [2, 0] -> [ 1, -1]
               3 -> [1, 1] -> [2, 2] -> [ 1,  1]
        Ç  Call the helper link with argument 3, yielding the following 2D array.
               [[ 1,  2,  2],
                [ 2,  1,  2],
                [ 2,  2,  3]]
      ×€   Multiply each [-1,  1], [ 1, -1], and [ 1,  1] by that matrix, using
           vectorizing multiplication (not matrix multiplication), yielding one 
           of the following three 2D arrays.

               [[-1,  2,  2],    [[ 1, -2,  2],    [[ 1,  2,  2],
                [-2,  1,  2],     [ 2, -1,  2],     [ 2,  1,  2],
                [-2,  2,  3]]     [ 2, -2,  3]]     [ 2,  2,  3]]
⁽0(ḃs      First helper link. Argument: 3

⁽0(        Numeric literal; yield 13041.
   ḃ       Convert 13041 to bijective base 3, yielding [1, 2, 2, 2, 1, 2, 2, 2, 3].
    s      Split the result into chunks of length 3, yielding the aforementioned
           2D array.

1

APL (NARS), 90 자, 180 바이트

{a⊃⍨⍵⊃⍋↑¨a←{⍵[⍋⍵]}¨a/⍨{1=∨/⍵}¨a←{(-/k),(×/2,⍵),+/k←⍵*2}¨a/⍨{>/⍵}¨a←,a∘.,a←⍳(⌊2⍟2+⍵)×9+⌊√⍵}

위 함수의 인수가 ⍵ 인 경우 위 함수는 배열의 인덱스 ⍵ (1 기반)의 요소를 반환합니다. 먼저 a, (더 짧은 쪽), b (다른 쪽은 빗변하지 않음) 순서입니다. 내가 b를 주문하는 곳이 보이지 않기 때문에 뭔가 잘못되었을 것입니다 ... 테스트 :

  f←{a⊃⍨⍵⊃⍋↑¨a←{⍵[⍋⍵]}¨a/⍨{1=∨/⍵}¨a←{(-/k),(×/2,⍵),+/k←⍵*2}¨a/⍨{>/⍵}¨a←,a∘.,a←⍳(⌊2⍟2+⍵)×9+⌊√⍵}
  f¨1..10
3 4 5  5 12 13  7 24 25  8 15 17  9 40 41  11 60 61  12 35 37  13 84 85  15 112 113  16 63 65  

http://oeis.org/A020884http://oeis.org/A020884/b020884.txt 와 관련이 있습니다.

A020884 : 원시 피타고라스 삼각형의 짧은 다리를 주문했습니다.

  ↑¨f¨1..23
3 5 7 8 9 11 12 13 15 16 17 19 20 20 21 23 24 25 27 28 28 29 31 
  f 999
716 128163 128165 
  f 1000
717 28556 28565 

그것이 옳은지 모르겠지만, 함수는 1000까지 삼각형의 첫 번째면의 올바른 결과를 제공하는 것처럼 보이지만 나머지는 알지 못하고 1000보다 작은 트리플도 가능하지 않을 수 있습니다.


0

자바 스크립트, 101 바이트

유클리드의 공식에 의해 모든 원시 피타고라스 수는 정수에서 생성 할 수 mn함께 m>n>0, m+n홀수 gcd(m,n)==1( 위키 백과 )

이 함수는 모든 m,n페어 증가 m부터 시작 하여 2부터 시작하여 m=2감소 n합니다 m-1( m+n홀수)

c=>eval("g=(a,b)=>b?g(b,a%b):a;for(m=2,n=1;c-=g(m,n)<2;(n-=2)>0||(n=m++));[m*m-n*n,2*m*n,m*m+n*n]")

덜 골프

c => {
  g = (a,b) => b ? g(b,a%b) : a;
  for( m = 2, n = 1; 
       g(m,n) < 2 ? --c : c; 
       (n -= 2) > 0 || (n = m++))
    /* empty for body */;
  return [m*m - n*n, 2*m*n, m*m + n*n]
}

테스트

F=
c=>eval("g=(a,b)=>b?g(b,a%b):a;for(m=2,n=1;c-=g(m,n)<2;(n-=2)>0||(n=m++));[m*m-n*n,2*m*n,m*m+n*n]")

for(i=1;i<=50;i++) console.log(i+' '+F(i))

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