![]() ![]() » 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.