Listing du fichier quatrecarres.php
00001 <?php
00002
00003 ######################################################################################
00004
00005 function ds4c($nombre) { # décomposition en somme de 4 carrés
00006
00007 ######################################################################################
00008
00009 $dbg = 0 ; # 0 en standard, 1 pour debug
00010
00011 # valeur limite : la racine carrée du nombre
00012
00013 $racine = round(sqrt($nombre)) ;
00014
00015 $n1 = $racine ;
00016
00017 # on boucle sur n1, n2 et n3 seulement,
00018 # n4 s'en déduira
00019 # comme il peut y avoir plusieurs solutions,
00020 # on renvoie ce qu'on a trouvé le plus tot possible
00021
00022 while ($n1>=0) {
00023 $cn1 = $n1*$n1 ;
00024 $n2 = $racine ;
00025 while ($n2>=0) {
00026 $cn2 = $n2*$n2 ;
00027 $n3 = $racine ;
00028 while ($n3>=0) {
00029 $cn3 = $n3*$n3 ;
00030 $cn4 = $nombre - ($cn1+$cn2+$cn3) ;
00031 if ($dbg==1) {
00032 echo " n1 $n1 n2 $n2 n3 $n3 cn4 $cn4 \n" ;
00033 } # fin si
00034 if ($cn4>=0) {
00035 $n4 = sqrt($cn4) ;
00036 if ($dbg==1) {
00037 echo " n4 possible $n4 \n" ;
00038 } # fin si
00039 if (round($n4)==$n4) {
00040 return( array($n1,$n2,$n3,$n4) ) ;
00041 } ; # fin si
00042 } ; # fin si
00043 $n3-- ;
00044 } # fin tant que sur n3
00045 $n2-- ;
00046 } # fin tant que sur n2
00047 $n1-- ;
00048 } # fin tant que sur n1
00049
00050 return( array("?","?","?","?") ) ;
00051
00052 } # fin fonction ds4c
00053
00054 ?>
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)