Décomposition d'un entier en facteurs premiers



Téléchargez le <a href="http://www.darkskull.net/fichiers/tips/prim.zip">programme exemple</a> (2.92 Ko)

Dans l'ensemble des nombres entiers, la décomposition d'un nombre en facteurs premiers permet de définir sa divisibilité: si un nombre b divise a (c'est à dire que le reste de la division euclidienne de a par b est nul), alors b est un facteur d'une factorisation entière de a.

Prenons par exemple la décomposition du nombre 12, on a l'égalité suivante:

  • 12 = 2 * 2 * 3



Dans cette opération, 2, 2 et 3 sont des facteurs premiers de la décomposition du nombre 12. On peut donc dire:

  • 12 est divisible par 2
  • 12 est divisible par 3
  • 12 est divisible par 4 (2 * 2)
  • 12 est divisible par 6 (2 * 3)





Voyons à présent le code pour effectuer la décomposition :

Décomposition en facteurs premiers

procedure Decompose(nombre: integer; list: TStrings);
var
  diviseur: integer;
begin
  // On vide la liste
  list.Clear;
  // Le premier nombre entier est 2.
  diviseur := 2;
  // Tant que le diviseur est inférieur
  // à la racine carrée du nombre
  while ((diviseur * diviseur) <= nombre) do
    begin
      // Si le compteur divise le nombre
      if ((nombre mod diviseur) = 0) then
        begin
          // On affiche le facteur dans la liste
          list.Add(IntToStr(diviseur));
          // Le nombre devient égal au quotient
          nombre := nombre div diviseur;
        end
      // Sinon, on incrémente le compteur
      else diviseur := diviseur + 1;
    end;
  // On ajoute le dernier nombre
  list.Add(IntToStr(nombre));
end;




3 requête(s) SQL executée(s) en 0.001 Secs - Temps total de génération de la page : 0.012 Secs