ChronoMath, une chronologie des MATHÉMATIQUES
à l'usage des professeurs de mathématiques, des étudiants et des élèves des lycées & collèges
 

Somme de deux, trois ou quatre carrés       
     »
somme de deux carrés (ni plus ni moins) | somme de 3 carrés (ni plus ni moins)

La conjecture de Waring, démontrée par Lagrange en 1770, énonce :

Tout entier naturel est la somme d'au plus quatre carrés (éventuellement égaux)
cette décomposition n'étant généralement pas unique

17 = 12 + 42   62 = 22 + 32 + 72     ,  19 = 12 + 12 + 12 + 42 = 32 + 32 + 12

Il est facile de se convaincre de ces résultats au moyen d'un petit programme élémentaire sur ordinateur : on se donne un entier naturel et on cherche ses décompositions possibles comme somme de 2, 3 ou 4 carrés (le cas d'une somme de deux carrés correspond aux triades de Pythagore (triplets pythagoriciens).

Le programme JavaScript ci-dessous n'est pas optimisé : il trouve des combinaisons redondantes et ne fait appel à aucune étude mathématique du problème : l'ordinateur cherche naïvement. C'est une application de la notion de boucles imbriquées. Le fait d'autoriser k = 0 et l = 0 permet d'obtenir une décomposition en 2 ou 3 carrés. Mais le programme évite l'affichage des zéros inutiles.




<SCRIPT LANGUAGE=JavaScript>
function go()
{
var nbr=""
nbr=eval(prompt("Entrez un nombre:",nbr))
rac=Math.sqrt(nbr)
for(i=1;i<=rac;i++)
{
for(j=i;j<=rac;j++)
{
for(k=0;k<=rac;k++)
{
for(u=k;u<=rac;u++)
{
if (nbr==i*i+j*j+k*k+u*u)
{
if(k==0 && u==0){rep=" = "+ i +"^2 + "+ j +"^2"}
if(k==0 && u!=0){rep=" = "+ i +"^2 + "+ j +"^2" + "+ "+ u +"^2"}
if(k!=0 && u!=0){rep=" = "+ i +"^2 + "+ j +"^2 + "+ k +"^2 + "+ u +"^2"}
if (!confirm(nbr+rep)) {return}
}
}}}}
}
</SCRIPT>

Nostalgie... : programme équivalent en Basic :

DEFINT a-z
INPUT "n=",n : r=SQR(n)

FOR i=1 TO r
  FOR j=i TO r
    FOR k=0 TO r
      FOR l=k TO r
        IF n=i*i+j*j+k*k+l*l THEN
                          PRINT USING"####";i;j;k;l
                          END IF
      NEXT l
    NEXT k
  NEXT j
NEXT i

   Dans le programme ci-dessus, si un zéro (resp. deux zéros) apparaît dans la décomposition, c'est que le nombre est décomposé en somme de 3 carrés (resp. deux carrés). Par exemple, pour 62, le programme fournit 1 3 4 6 , mais aussi : 1 5 6 0 et  2 3 0 7.



© Serge Mehl - www.chronomath.com