algebra

Terne pitagoriche primitive.

Si sa che i numeri 3,4,5 sono una terna pitagorica in quanto soddisfano la nota realzione riguardante i triangoli rettangoli  a^2+b^=c^2, vale a dire la somma delle aree dei quadrati costruiti sui cateti è equivalente all'area del quadrato costruito sull'ipotenusa cioè  9+16=25. I numeri 3,4,5 costituiscono una terna pitagorica primitiva. Altre terne di numeri interi si ricavano da una terna primitiva dalla relazione k*(a+b)=k*c. Per esempio per k=2 si ha la terna pitagorica derivata 2*(3,4)=2*5, vale a dire 6,8 10. In effetti 36+64=100. Si pone il problema di determinare altre terne pitagoriche primitive con a,b,c interi che soddisfino l'equazione a^2+b^2=c^2. Si sa che questa relazione è soddisfatta da infinite triple di numeri interi. L'ultimo teorema di Fermat sostiene che per un esponente maggiore di 2 non esistono soluzioni intere dell'equazione. Dopo quasi due secoli di ricerche inutili esso è stato dimostrato vero da Andrew Wiles nel 1997. Proponiamo un algoritmo che ricerchi terne pitagoriche primitive nell'intervallo finito  (0,k). Esso è tratto da Packages quaderni di Matehematica n.1,

BeginPackage["myfrau`tP`"];
tP::usage="tP[n] rende le terne pitagoriche primitive.";
Begin["`Private`"];

tP[n_]:=
Module[{tr=Table[With[
  {r=Floor[N[(Sqrt[1+8 j]-1)/2]]},
   {(j-r (r+1)/2),(r (r+3)/2-j)}],{j,1,n}]},
Prepend[
    Select[
      Table[
                 If[(tr[[i,2]]!=0)&&
                   (tr[[i,1]]>tr[[i,2]])&&
                        (!IntegerQ[tr[[i,1]]/tr[[i,2]]])&&
                          ((OddQ[tr[[i,1]]]||OddQ[tr[[i,2]]])&&
                              (!(OddQ[tr[[i,1]]]&&OddQ[tr[[i,2]]]))),
                                   {tr[[i,1]]^2-tr[[i,2]]^2,
                                    2 tr[[i,1]] tr[[i,2]],
                                    tr[[i,1]]^2+tr[[i,2]]^2},],
                                   {i,1,Length[tr]}],ListQ],{3,4,5}]];

End[];
EndPackage[]

tP[100]

        {{3, 4, 5}, {5, 12, 13}, {7, 24, 25}, {21, 20, 29}, {9, 40, 41}, {45, 28, 53}, {11, 60, 61}, {33, 56, 65}, {55, 48, 73}, {77, 36, 85}, {13, 84, 85}, {39, 80, 89}, {65, 72, 97}}

algebra