Valid XHTML     Valid CSS2    

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 gH    Retour à la page principale de   (gH)