Maths : le pgcd

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 278 fois - Téléchargée 28 fois

Contenu du snippet

Salut all !

Voilà comme on à fais le PGCD en cours de Maths (je suis en 3ème) et qu'on devais essayer de faire des étapes pour le calculer ... (un mini mode demploi à partir de l'algo de base) j'ai mis mon petit grain de sel et je l'est fait en PHP :)

Bon me prenez pas trop pour un con parceque tout est expliqué : le prog est destiné à ma prof de maths qui ne connais rien donc évidament il a fallu broder !

Allez jarête de koser pour rien :

Source / Exemple :


// ####################################### \\
// #           PGCD par PoPo             # \\
// # 2003  -  http://popolinux.zapto.org # \\
// ####################################### \\

// Division Euclidiène (fonction)

function euclide($nombre, $diviseur){
        $entier = floor($nombre / $diviseur);         // entier (variable) est égale au quotient (sans les décimales) de la division de nombre (variable) par diviseur (variable)
        $reste = $nombre - $entier * $diviseur;       // reste (variable) est égale à nombre (variable) soustrait à entier (variable) multiplié par diviseur (variable)

        return $reste;                                // On renvoi la variable reste
}

// Calcul du PGCD (fonction)

function PGCD($val_a, $val_b){
        if($val_a < $val_b){                          // Si Valeur A est plus petite que Valeur B alors
                  $petit = $val_a;                    //   Petit est égal à Valeur A
                  $grand = $val_b;                    //   Grand est égal à Valeur B
        }else{                                        // Sinon
                  $petit = $val_b;                    //   Petit est égal à Valeur B
                  $grand = $val_a;                    //   Grand est égal à Valeur A
        }                                             // Fin de la condition

        $status = "ERR";                              // Définition du status (variable) à ERR

        while($status != "OK"){                       // Tant que status (variable) n'est pas OK (valeur) alors
                  $reste = euclide($grand, $petit);   //   reste (variable) est égale à la division euclidiène (fonction) de grand (variable) par petit (variable)
                  if($reste == 0){                    //   Si reste (variable) est égale à 0 (valeur) alors
                            $status = "OK";           //     status (variable) vaut OK (valeur)
                            $resultat = $petit;       //     resultat (variable) vaut petit (variable)
                  }else{                              //   Sinon
                            $status = "ERR";          //     status (variable) est égale à ERR (valeur)
                            $grand = $petit;          //     grand (variable) est égale à petit (variable)
                            $petit = $reste;          //     petit (variable) est égale à reste (variable)
                  }                                   //   Fin de la condition
        }                                             // Fin de la boucle conditionnelle

        return $resultat;                             // On renvoi la variable resultat
}

$a = 2622;                                            // La valeur A (variable) est égale à 2622 (valeur)
$b = 2530;                                            // La valeur B (variable) est égale à 2530 (valeur)

echo PGCD($a,$b);                                     // On affiche le résultat de la fonction PGCD ou a (valeur) est le premier paramètre et ou b (valeur) est le second

?>

Conclusion :


PoPo 2003
http://popolinux.zapto.org

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
vendredi 7 novembre 2008
Statut
Membre
Dernière intervention
23 mars 2009

La fonction euclide est inutile :
$a % $b = le reste de la division euclidienne par $a et $b.
Sinon, le code est plutôt bon.
Messages postés
2
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
27 octobre 2003

thepopolinux,
jai moins long et plus simple

function pgcd($x,$y,$details=true) {
$values = array($x,$y,"");
while(empty($pgcd)) {
$mulby = round(bcdiv($values[0],$values[1]));
$hadd = bcsub($values[0],bcmul($values[1],$mulby));
if($details) {
print($values[0]." = ".$values[1]." * ".$mulby." + ".$hadd."
");
}
if($hadd == "0") {
(empty($values[2])) ? $pgcd = $values[1] : $pgcd = $values[2];
return $pgcd;
}
$values[0] = $values[1];
$values[1] = $hadd;
$values[2] = $hadd;
}
}

Gfx - nico_zb@hotmail.com
Messages postés
245
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
21 juin 2004

moi je me rapelle bien de mon prof de techno qui se servait de moi en 6ème et qui me rabaissait dans mon dos devant d'autres profs !
J'avais eu la riche idée de prendre une foto de mon Q et de la splasher sur tous les écrans au démarrage de Vindaube (dans tt le rézo du bahu) !
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007

ouais lol moi jme souviens d'un prof qui voulait me faire installer win95 (bon c'était en 97) sur son 486 avec 8mo de ram, c'était horrible à voir mais c'était marrant lol
Messages postés
245
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
21 juin 2004

oui jadore doner des cours a mes profs ...
et plus particulièrement kan ils menvoient pétre j'aime les ridiculiser devant la classe comme ça après ils ont des bonnes raisons de pa m'aimer ... mais leur comportement avec moi change vite :)

@++ all
PS : jé eu mon brevet ... extraordinaire !!!!
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.