Exemple 2-3-3 «Décomposition en facteurs premiers» - Script PHP

Initiation à la programmation avec le langage PHP, §2 Structures de contrôle répétitives

Le bouton permet d'exécuter le script PHP.

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport"
	content="width=device-width, initial-scale=1.0">
<meta name="robots" content="NoIndex,NoFollow">
<title>Décomposition en facteurs premiers</title>
</head>
<body>
<?php
/*
	Données
*/
$n = 360;
/*
	Décomposition d'un entier naturel
	en facteurs premiers
*/
echo '<p>'
	.$n
	.' = ';
$p = 2;
$suivant = false;
while ($n > 1) {
	$e = 0;
	while ($n % $p == 0) {
		$n = $n / $p;
		$e++;
	}
	if ($e >= 1) {
		if ($suivant) {
			echo ' * ';
		} else {
			$suivant = true;
		}
		echo $p;
		if ($e > 1) {
			echo '^'.$e;
		}
	}
	$p++;
}
echo '</p>';
?>
</body>
</html>

Explications

  • Le nombre n donné est divisé par p=2 autant de fois que cela est possible; durant cette activité, on compte le nombre e de fois que le facteur p est contenu dans n; on affiche 2^e.
  • Le nombre n donné est divisé par p=3 autant de fois que cela est possible; durant cette activité, on compte le nombre e de fois que le facteur p est contenu dans n; on affiche 3^e.
  • Puisque maintenant n n'est divisible ni par 2, ni par 3, le reste de la division de n par 4 est nul; ainsi seuls des diviseurs p premiers peuvent apparaître.
  • Poursuivre avec p=5, etc, tant que n>1. Le processus s'arrête nécessairement, car la plus grande valeur possible de p est n.
  • Si e==0, le facteur p^0 n'est pas affiché;
    si e == 1, affiche p au lieu de p^1;
    si e >= 2, affiche p^e.
  • Au premier facteur p^e affiché, la variable «suivant» a la valeur booléenne «faux»; l'expression p^e est affichée sans être précédée d'une étoile.
  • Pour le deuxième facteur p^e et les suivants, la variable «suivant» a la valeur logique «vrai»; alors une étoile est écrite avant d'afficher p^e.
  • Il est préférable d'écrire «if ($suivant)» plutôt que «if ($suivant == true)».
Contact |  Accueil   >   PHP   >   Initiation