Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ALGORITHME D'EUCLIDE OU DIVISIONS SUCCÈSSIVES : CALCULE DU PGCD EN BONNE FORME !


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : algorithme, euclide, pgcd Niveau : Débutant Date de création : 07/02/2007 Date de mise à jour : 07/02/2007 15:47:41 Vu / téléchargé: 7 119 / 172

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Salutations ! Je vous présente ce code (qui est ma première contribution pour phpcs).

je l'ai codé suite à un cours sur le PGCD (Plus Grand Commun Diviseur) en classe de 3ème.

J'ai regardé les sources sur la question et je me suis aperçu qu'aucune ne rédigeait comme notre professeur nous l'a demandée...

Voici donc ma source basée sur mes connaissances !
 

Source

  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml">
  • <head>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  • <title>Algorithme d'Euclide</title>
  • </head>
  • <body>
  • <fieldset>
  • <legend><b>Données</b></legend>
  • <form method="get"> <!--début du formulaire méthode get On affiche les nombres déjà entrés au cas ou il y a une faute de frappe que l'utilisateur veille modifier! -->
  • Nombre n°1 :
  • <input type="text" name="nbr1" id="nbr1" value="<?php if(isset($_GET['nbr1'])) echo $_GET['nbr1']; ?>" />
  • <br />
  • Nombre n°2 :
  • <input type="text" name="nbr2" id="nbr2" value="<?php if(isset($_GET['nbr2'])) echo $_GET['nbr2']; ?>" />
  • <br />
  • <input type="submit" value="Calculer !" />
  • </form>
  • </fieldset>
  • <?php
  • ##Euclide nous dit qu'il faut diviser le nombre le plus grand par le plus petit donc c'est chose faite !##
  • if(isset($_GET['nbr1']) && isset($_GET['nbr2'])) //pour ne pas exécuter le script pour rien ;)
  • {
  • if($_GET['nbr1'] >= $_GET['nbr2'])
  • {
  • $nbr1 = $_GET['nbr1'];
  • $nbr2 = $_GET['nbr2'];
  • }
  • else
  • {
  • $nbr1 = $_GET['nbr2'];
  • $nbr2 = $_GET['nbr1'];
  • }
  • ?>
  • <fieldset>
  • <legend><b>Résultat</b></legend>
  • <!--Affichage de la rédaction-->
  • PGCD(
  • <?=$nbr1?>
  • ;
  • <?=$nbr2?>
  • )<br />
  • On utilise l'algorithme d'Euclide<br />
  • Et on regroupe les résultats dans un tableau.
  • <center>
  • <table>
  • <thead>
  • <!-- En-tête du tableau -->
  • <tr>
  • <th>Dividende</th>
  • <th>Diviseur</th>
  • <th>Reste</th>
  • </tr>
  • </thead>
  • <tfoot>
  • <!-- Pied de tableau -->
  • <tr>
  • <th>Dividende</th>
  • <th>Diviseur</th>
  • <th>Reste</th>
  • </tr>
  • </tfoot>
  • <tbody>
  • <!-- Corps du tableau -->
  • <?php
  • $dividende = $nbr1; // le dividende est le premier nombre (nbr1/nbr2 = résultat entier +reste)
  • $diviseur = $nbr2; //le diviseur est donc le second nombre
  • $reste = $nbr1%$nbr2; //Opération de modulo pour obtenir le reste !
  • echo "<tr>
  • <td>$dividende</td>
  • <td>$diviseur</td>
  • <td>$reste</td>
  • </tr>"; //Affichage
  • while($reste != 0) // On fait l'opération qui suit dans une boucle
  • {
  • /*On décale : le reste devient le diviseur et le diviseur devient le dividende */
  • $dividende = $diviseur;
  • $diviseur = $reste;
  • echo "<tr>
  • <td>$dividende</td>
  • <td>$diviseur</td>"; //affichage
  • $reste = $dividende%$diviseur; //Modulo
  • echo "<td>$reste</td>
  • </tr>"; //affichage
  • }
  • ?>
  • </tbody>
  • </table>
  • </center>
  • <!--Fin de la rédaction-->
  • Or, dans l'algorithme d'Euclide le PGCD est le dernier reste non nul.<br />
  • PGCD(
  • <?=$nbr1?>
  • ;
  • <?=$nbr2?>
  • )
  • = <?=$diviseur?>
  • </fieldset>
  • <?
  • }
  • ?>
  • </body>
  • </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Algorithme d'Euclide</title>
</head>
<body>
<fieldset>
<legend><b>Données</b></legend>
<form method="get"> <!--début du formulaire méthode get On affiche les nombres déjà entrés au cas ou il y a une faute de frappe que l'utilisateur veille modifier! -->
  Nombre n°1 :
  <input type="text" name="nbr1" id="nbr1" value="<?php if(isset($_GET['nbr1'])) echo $_GET['nbr1']; ?>" />
  <br />
  Nombre n°2 :
  <input type="text" name="nbr2" id="nbr2" value="<?php if(isset($_GET['nbr2'])) echo $_GET['nbr2']; ?>" />
  <br />
  <input type="submit" value="Calculer !" />
</form>
</fieldset>
<?php
##Euclide nous dit qu'il faut diviser le nombre le plus grand par le plus petit donc c'est chose faite !##
if(isset($_GET['nbr1']) && isset($_GET['nbr2'])) //pour ne pas exécuter le script pour rien ;)
{
	if($_GET['nbr1'] >= $_GET['nbr2'])
	{
	$nbr1 = $_GET['nbr1'];
	$nbr2 = $_GET['nbr2'];
	}
	else
	{
	$nbr1 = $_GET['nbr2'];
	$nbr2 = $_GET['nbr1'];
	}
?>
<fieldset>
<legend><b>Résultat</b></legend>
<!--Affichage de la rédaction-->
PGCD(
<?=$nbr1?>
;
<?=$nbr2?>
)<br />
   On utilise l'algorithme d'Euclide<br />
       Et on regroupe les résultats dans un tableau.
<center>
  <table>
    <thead>
      <!-- En-tête du tableau -->
      <tr>
        <th>Dividende</th>
        <th>Diviseur</th>
        <th>Reste</th>
      </tr>
    </thead>
    <tfoot>
      <!-- Pied de tableau -->
      <tr>
        <th>Dividende</th>
        <th>Diviseur</th>
        <th>Reste</th>
      </tr>
    </tfoot>
    <tbody>
      <!-- Corps du tableau -->
      <?php
   $dividende = $nbr1; // le dividende est le premier nombre (nbr1/nbr2 = résultat entier +reste)
   $diviseur = $nbr2; //le diviseur est donc le second nombre
   $reste = $nbr1%$nbr2; //Opération de modulo pour obtenir le reste !
   echo "<tr>
   			<td>$dividende</td>
			<td>$diviseur</td>
			<td>$reste</td>
		</tr>"; //Affichage
   while($reste != 0) // On fait l'opération qui suit dans une boucle
   {
   /*On décale : le reste devient le diviseur et le diviseur devient le dividende */
   $dividende = $diviseur;
   $diviseur = $reste;
   echo "<tr>
   			<td>$dividende</td>
			<td>$diviseur</td>"; //affichage
   $reste = $dividende%$diviseur; //Modulo
   echo "<td>$reste</td>
	</tr>"; //affichage
   }
   ?>
    </tbody>
  </table>
</center>
<!--Fin de la rédaction-->
Or, dans l'algorithme d'Euclide le PGCD est le dernier reste non nul.<br />
PGCD(
<?=$nbr1?>
;
<?=$nbr2?>
)
= <?=$diviseur?>
</fieldset>
<?
}
?>
</body>
</html>

Conclusion

Ce script n'est pas optimisé mais le sera bientôt (?)
L'exemple en ligne ici : http://phenix-aventure.fr/euclide.php


Interceptor alias Canibale
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

07 février 2007 15:47:43 :
Petites erreurs d'orthographes vu au moment de la validation...

Commentaires et avis

signaler à un administrateur
Commentaire de iow4 le 07/02/2007 16:06:35

Salut,

Il existe pas mal de source traitant du PGCD, j'en avais moi même posté une ( conforme au recomandation de mon prof )
C'est dommage que ta source ne fasse pas intervenir la recursivité.

signaler à un administrateur
Commentaire de canibale le 07/02/2007 16:18:20

Surement les profs qui ne font pas faire la rédaction pareil...

Je pense que la récursivité monte un peu le niveau de la source voir la rend plus complexe pour les débutants... Une boucle étant plus simple !

Merci pour ton commentaire ;)

signaler à un administrateur
Commentaire de TheSin le 08/02/2007 10:35:25

sympa le code, ça faisait longtemps que j'avais plus vu de PGCD lol
optimisation:
<?=$nbr1?>            => Déconseillé
<?php echo $nbr1; ?>  => Mieux ;)

idem pour tous tes <? à remplacer par <?php  , car c'est aussi la balise ouvrante XML, voire d'autres encore
revoit aussi un peu xhtml, je suis certain qu'il ne passe pas à la validation (manque d'attributs principallement).
A par ça j'ai rien remarqué d'autres, j'ai  juste regardé en vitesse. ;-)

signaler à un administrateur
Commentaire de canibale le 08/02/2007 17:47:38

Ok merci (pourtant dans mon livre ou j'ai appris php ils disaient que <?=$variable?> était plus rapide que <?php echo $variable; ?>

signaler à un administrateur
Commentaire de iow4 le 10/02/2007 11:37:41

Oui peut être ici dans le cas ou tu ouvre une balise Php pour afficher chaque variable. Ca a beau être plus rapide si TheSin dit que c'est pas conseillé alors je pense que tu devrais oublier ça.
Le plus rapide pour afficher des chaines dynamiques c'est avec echo et les virgules sinon.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Algorithme de tri ... [ par LocalStone ] Salut à tous ! Il y a peut-être 1 mois et demi, j'ai lu un article - ou plutôt un tutorial - sur comment mettre en place un algorithme de tri automati Algorithmique ... [ par LocalStone ] Salut &#224; tous ...Alors voil&#224;, j'ai eu une id&#233;e et je cherche des personnes suc&#233;ptibles de pouvoir m'aider &#224; cr&#233;er une tel aide pour un algorithme ! [ par shaoling ] Bonjour, j'ai une &#233;nigme &#224; r&#233;soudre, et pour cela je compte bien m'aider du php ! Voici l'&#233;nigme :Pour la somme de 5 euros, on a a Combinaison, algorithme combinatoire, algo de boole [ par pssinjaune ] Bonjour a tous,je n'ai jamais étais une fleche en maths, je dois developper un algorithme qui permet d'afficher toute les combinaisons possible de N é Aide algorithme Ladder (situation industrielle) [ par JoeBlo25 ] Bonjour, j'ai une situation a réaliser en Ladder mais je ne sais pas par ou commencer (je suis débutant). J'ai 2 réservoirs allimentés par une décharg algorithme évolutionnaire [ par rafik077 ] bonjour, j'ai un projet sur létude comparative d'algorithme évolutionnaire(algorithme génétique).j'ai besoin de code c++ de méthodes drmoga et méthode Cherche algorithme de devinette [ par ycochard ] Bonjour,Je cherche l'algorithme qui se trouve derrière ce petit jeu :http://www.akinator.com/aki_fr/ (attention les yeux, ça flashe)Vous savez comment


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.