Algorithme d'euclide ou divisions succèssives : calcule du pgcd en bonne forme !

Soyez le premier à donner votre avis sur cette source.

Vue 14 344 fois - Téléchargée 274 fois

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 / Exemple :


<!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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de iow4

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.