İlkel Pisagor Üçlüleri


29

( ilgili )

Bir Pisagor Paket listesidir (a, b, c)tatmin denklem bir 2 + B 2 = C 2 .

Bir ilkel Pisagor Paket (PPT) bir olduğu a, bve chepsi asal (üç elemanları arasındaki tek ortak böleni yani 1). Örneğin, (3, 4, 5)doğru üçgen ünlü bir İlkel Pisagor Üçlüdür.

Meydan okuma

  • Verilen giriş n, nth PPT çıkışını yapın . Veya,
  • Verilen giriş n, ilk nPPT'leri verir.

Bu PPT'lerin, hangisinin hangisi olduğunu belirlemek için düzenli bir liste oluşturması için birçok yol vardır n. Algoritmanızın her olası benzersiz PPT'yi üretebileceğini kanıtlayabildiğiniz sürece (gayrı resmi olarak iyi) istediğiniz herhangi bir siparişi seçebilirsiniz. Örneğin, kodunuz ikisini de çıkarmamalı (3,4,5)ve (4,3,5)bunlar aynı üçlünün kopyaları olduğundan - biri ya da diğeri, lütfen.

Benzer şekilde, kodunuzun sıfır mı yoksa bir dizinlenmiş mi olduğunu, hangisini kullandığınızı belirttiğiniz sürece, sorun yoktur.

Örnekler

Aşağıdaki örnekler için, ben çıktısı, tek indeksleme kullanıyorum nen küçük ile inci PPT ve sipariş cen küçük sonra, aen küçük, sonra b.

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

kurallar

  • Giriş ve çıkış herhangi bir uygun formatta verilebilir .
  • Başvurunuzda lütfen girişlerinizin nasıl sıralandığını ve girişlerinizin 0 indeksli veya 1 indeksli olduğunu belirtin.
  • Seçtiğiniz sipariş kopya oluşturamaz.
  • Tam bir program veya bir işlev kabul edilebilir. Bir işlev varsa, çıktıyı yazdırmak yerine geri gönderebilirsiniz.
  • Mümkünse, lütfen başkalarının kodunuzu deneyebilmesi için çevrimiçi bir test ortamına bir bağlantı ekleyin!
  • Standart boşluklar yasaktır.
  • Bu olduğundan, tüm normal golf kuralları geçerlidir ve en kısa kod (bayt cinsinden) kazanır.



Desteklememiz gereken en yüksek girdi nedir? Seçtiğimiz dilin yeteneklerine uygun olduğunu varsayabilir miyiz?
Bay Xcoder

1
@ Mr.Xcoder Evet; Sorunu önemsiz yapmak için bir boşluktan istifade etmek için kullanmıyorsanız (örneğin, dil yalnızca 1 bitlik sayıları destekler) bu standart güvenli bir varsayımdır .
AdmBorkBork

2
A ve b aralarında asal olmalıdır ve bu yeterlidir: Soruma cevap buldu proofwiki.org/wiki/...
edc65

Yanıtlar:


12

Jöle , 27 25 bayt

Jonathan Allan'a 2 bayt teşekkürler.

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

Çevrimiçi deneyin!

İlk n1-indekslenmiş üçlüyü [b, a, c], bsonra ve sonra sıralayarak çıkarır a.

Algoritmayı Wikipedia'dan kullanır :

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

Bu, tek tam sayıların tüm benzersiz eşdüzlü çiftleri için tüm ilkel üçlileri üretir m > n > 0.

açıklama

+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].

Bu gerçekten güzel bir açıklama. Teşekkürler!
AdmBorkBork

g/Ị$Ðf-> g/ÐṂiki baytı kurtarmak için (minimum gcd 1 olduğundan ve her zaman en az bir giriş olacaktır).
Jonathan Allan

Başka bir byte da (daha az verimli olmasına rağmen) bir giriş için işe yaramayacak - hurda +2ḶḤ‘Œcile değiştirilerek kurtarılabilir :²Rm2Œc1
Jonathan Allan

@JonathanAllan En az biri için teşekkürler. 2 baytlık çok sayıda deneme yaptım, ancak ne yazık ki hiçbiri yeterince büyük değildi. ( ²ḶḤ‘Œcdüşündüğüm ilk biriydi.)
PurkkaKoodari

8

MATL , 36 bayt

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

Giriş 1 tabanlıdır. Çıktı sırası, her üçlünün bir kez görünmesini garanti eder. Sipariş aşağıda açıklanmıştır. Bu açıklama, programın nasıl çalıştığı hakkında biraz bilgi sahibi olmayı gerektirir.

Kod k, başlangıçtan itibaren bir döngüde bir sayacı arttırmaya devam ediyor 1. Her biri için kbu tüm çiftleri oluşturur a = 1,...,k, b = 1,...,k, a < bve alır üçlü bir Pisagor atfedenlerdir c <= k. Çiftleri artan sırasına göre elde edilir b, daha sonra a.

Her çift daha sonra gcd'ye bölünür. Elde edilen (muhtemelen kopyalanmış) çiftler, iki sütunlu bir matris olarak düzenlenir. Bu matris, daha küçük değerler için elde edilen birikmiş sonuçları içeren benzer bir matris ile dikey olarak birleştirilir k. Matrisin sıraları daha sonra kararlı bir şekilde tekilleştirilir. Bu, iki tür yinelenmeyi kaldırır :

  1. Akım bir kereden fazla tespit edilmiştir çiftleri k(örneğin 3,4, hangi da sonuç 6,8olarak gcd bölünerek olduğunda);

  2. Zaten daha küçük olan çiftler k.

Aslında, her bir yineleme k, önceki yinelemelerde bulunan tüm çiftleri bulur. Ama onları farklı bir düzende bulabilir . Örneğin, k=25üçlüyü bulacaktır ( 7,24,25değil, 20,21,29çünkü cgeçemez k). Daha sonra, yineleme k=29hem bulabilirsiniz, ancak birlikte olacaktır 20,21,29 önce 7,24,25 (sipariş artmaktadır bsonra a). Bu nedenle, tüm çiftleri en son bulunanlar arasında tutmak yerine, köncekilere ekleriz ve ahenkli bir şekilde tekilleştiririz. Bunu yapmak, siparişin herhangi bir girdi için aynı olduğunu garanti eder n.

Yukarıdakiler, ilkel Pisagor üçlüsünün nihayetinde ortaya çıkacağını ve sadece bir kez ortaya çıkacağını garanti eder. Girdi için n, üzerinden döngü ken az ngeçerli üçlü elde edildiğinde biter ; ve sonra- nüçlü çıkış var.

Çevrimiçi deneyin!

Veya ilk nüçlüyü görmek için bu değiştirilmiş kodu kullanın :

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

Çevrimiçi deneyin!


1
Güzel açıklama.
AdmBorkBork,


5

Jöle , 19 18 bayt

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

Program 1 tabanlı bir indeksi n alır ve ilk n PPT'leri [c, b, a] sözlüksel sırayla yazdırır .

Bu bir O (64 n ) çözümdür, bu nedenle TIO giriş 4 ve daha yükseğe boğulacaktır . Daha hızlı yapmak için çalışacağım.

Çevrimiçi deneyin!

Alternatif versiyon, O (n 3 ), muhtemelen geçerli

Bulmak için n inci - üçlü [c , n , b, n , bir n ] - Yukarıdaki çözüm olduğunu varsayar c n ≤ 4 n doğrulamak çok kolaydır. Ancak, A020882 kanıtlamaktadır C , n ~ 2πn , böylece orada bir k , öyle ki c n ≤ kn tüm n .

Eğer k = 7 alabilirsek , aşağıdaki çözüm de geçerlidir (ve çok, çok daha hızlı).

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

Çevrimiçi deneyin!

Nasıl çalışır

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

JavaScript (ES7), 106 105 103 bayt

N'inci PPT'yi verir. Sonuçlar 1 indekslenir ve b değeri ile sıralanır .

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)

gösteri


4

MATL , 63 bayt

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

Çevrimiçi deneyin!

Golf dersi çok yanlış gitti. Yine de gönderiyorum çünkü bunu daha iyi golf yapmanın bir yolu olup olmadığını merak ediyorum.

Ben bu esaslı bu , Öklid formülü ile birlikte Vikipedi sayfası yapıcı deneme-yanılma yaklaşımları yerine tüm üçe oluşturmak için.

İlk olarak, tek koprime çiftleri üçlü bir ağaç olarak üretilir. Bu, bayt sayısının çoğunu hesaba katarak büyük bir matris çarpımı olarak yapılır. Daha sonra, Euclid'in formülü, muhtemelen ayrıca çok bayt harcıyor bir şekilde uygulanır. Herhangi birinin bu iki bölüm için önerileri varsa, onları duymayı çok isterim.

Baytları kurtarmak için bu programın girdiyle aynı derinlikte bir ağaç oluşturduğunu unutmayın log3(n). Ayrıca, çocuklar yalnızca ağacın son satırı için değil, her satır için oluşturulur ve ardından yeniden filtrelenir Xu. Verimli bir yapıcı yaklaşım için çok.

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

Haskell, 65 bayt

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

0 tabanlı indeksleme. Bir verilen c, bkadar cve akadar çalışır b, bu yüzden c > b > aher zaman tutar.

Çevrimiçi deneyin!


3

Python, 67 50 48 46 Bayt

Wikipedia'da bulunan formülleri kullanarak,

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

nerede m>n>0ve mve nkopanlar ve garip. İşte kod

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

@Martin Ender sayesinde -17 bayt

Çevrimiçi Deneyin

Her zaman değerine sahip Works n, yani 1 olmak denklemde değişken msadece bu durumda, başka bir tek değer ilkel Pisagor üç sayısıdır. Bu, tüm değerler için 1 değerini almamızı sağlar .3+2*nnn


PPCG'ye Hoşgeldiniz! Adsız işlevler gayet iyi, bu nedenle lambda'yı atamanıza gerek yok a(ve bunu yaparsanız, oradaki iki boşluktan kurtulabilirsiniz). Ayrıca neden printorada olduğunuzdan emin değilim , sadece lambda'nın değerlerini geri getirebilirsiniz.
Martin Ender

"Algoritmanızın her olası benzersiz PPT'yi üretebileceğini kanıtlayabilirsiniz (gayrı resmi olarak iyi) Ancak bu yöntem sadece hipotenüsün bir bacağından 1 daha uzun olduğu durumlarda ortaya çıkar. Örneğin, asla 8,15,17 üretmez.
Rosie F,

2

Kabuğu , 18 bayt

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

Çevrimiçi deneyin!

Dennis'den ilham alan Zgarb'a -4 bayt teşekkür

Süper yavaş kaba kuvvet yaklaşımı, 1'den büyük girişler için TIO üzerinde çalışmaz. Burada , a, b≤200 ile sınırlandırılmış daha yönetilebilir bir sürüm deneyebilirsiniz.

açıklama

↑ü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

Harita ve filtreyi birleştirerek 20 bayt , daha yavaş.
Zgarb

@Zgarb teşekkür ederim! Ekstra bir bayt golf oynadım :)
Leo

18 baytDennis'in Jelly cevabından çıkarma hüner ile .
Zgarb

@Zgarb güzel! Şüphem olsa da: Aynı şeyle iki farklı üçlü olabilir mic mi? Bu durumda, bu çözümün düzeltilmesi gerekecek
Leo,

Hmm, aslında aynı şeyle birçok üçlü var c. Bu 18 baytlık çözüm (Dennis'in başka bir numarasını kullanır) ne olursa olsun çalışır.
Zgarb

1

Mathematica, 89 bayt

c tarafından sipariş edilen Çöz'ü kullanarak

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 bayt

(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 (+ sayılar), 88 bayt

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

Sayıları oluşturmak için bir yerleşik kullanmak, aslında istediğimizi elde etmek için şaşırtıcı miktarda bayt alır. Yerleşik iki argüman alır c1ve c2sahip olan üçüzleri döndürür c >= c1 & c <= c2. Bu, nüçlüye ulaşmak için biraz can sıkıcı hale getirir . Bu c2, çıktı yalnızca yeterli satır olana kadar bir seferde 1 artmaya devam edecektir .


1

PHP , 273 Bayt

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) siparişte [a, b, c] dizisini döndürür a < b < c
  • Sıfır tabanlı bir dizin döndürür

Çevrimiçi deneyin! (kod orada da okunabilir)


1

C, 158 bayt

Bunun benim ilk gönderimim olduğuna inanıyorum, bu yüzden muhtemelen daha iyisini yapabilirsin.

#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++;};}

Ve asılsız versiyon:

#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");
}

İçin bir 2 + B 2 = C 2 , sipariş artmaktadır c arttırılarak bir .

Diye iki kez aynı PPT olabilir b açılacak en az olan bir bu algoritmada.


PPCG'ye Hoşgeldiniz!
JAD,

1

Jöle , 27 25 bayt

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

Bu, @ AndersKaseorg'un Haskell yanıtındaki ağaç yaklaşımının bir uygulamasıdır. farklı bir şube siparişiyle uygulanmasıdır. Program 0 tabanlı indeksleme kullanıyor ve STDIN'den girdi alıyor.

Çevrimiçi deneyin!

Arka fon

Vikipedi sayfasında ilkel Pisagor Ağacı'nın üçlü ağacı ağacında belirtildiği gibi , her PPT satır vektörünü tekrar tekrar sola çarparak elde edilebilir (3, 4, 5) belirli özelliklere sahip matrislerle elde edilebilir.

Her yinelemede, önceki sonuç aşağıdaki gibi seçilebilecek olan A , B veya C ile çarpılabilir .

matrisler

Ne zaman bir , B , ve C , sabit, her bir PPT benzersiz bir şekilde elde edilebilir.

Nasıl çalışır

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 karakter, 180 bayt

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

Yukarıdaki fonksiyonun argümanı ⍵ ise, yukarıdaki fonksiyon dizinin ⍵ (1 tabanlı) dizini elemanını döndürür. Pisagor üçlü (a, b, c) elemanlarını içerir, burada a <= b <= c ve o dizi önce a, (daha kısa taraf), daha sonra b (diğer taraf hipotenüs değil) için sıradır. Yanlış bir şeyler olurdu çünkü b için de sipariş ettiğim yer yoktu ... test:

  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/A020884 ile ilgilidir ve http://oeis.org/A020884/b020884.txt

A020884: İlkel Pisagor üçgenlerinin kısa bacakları sipariş edildi.

  ↑¨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 

Bunun doğru olup olmadığını bilmiyorum, fonksiyon üçgenin ilk tarafının 1000'e kadar doğru bir sonuç verdiğini gösteriyor ama kalmayı bilmiyorum ve mümkün de olsa <1000 bile olsa üçlü olabilir.


0

JavaScript, 101 bayt

Öklid formülü tarafından ilkel Pisagor üçlü tamsayı üretilebilir mve nile m>n>0, m+ntek gcd(m,n)==1( Wikipedia )

Bu fonksiyon tüm sıralar m,nçift artan m başlayarak m=2ve azalan nbaşlayarak 2 ile m-1(ki m+ngarip)

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]")

Daha az golf oynadı

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]
}

Ölçek

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))

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.