Calculer le ppcm de deux nombres

Description

Le programme calcul le ppcm de deux nombres, c'est à dire le plus petit commun multiple.
Pour ceux qui ne savent pas ce que c'est prenons un exemple, soit deux nombres 18 et 15.
Les multiples de 18 sont {18,36,54,72,90,108......}
Les multiples de 15 sont {15,30,45,60,75,90,105......}

Donc ppcm(18,15) = 90. (90 est commun aux deux listes}

Source / Exemple :


unit ppcm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,i,j,temp : Integer;
var TableauA : array [1..500] of Integer;
var TableauB : array [1..500] of Integer;
begin

a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);

if (a = b)       then
begin
        Edit3.Text := IntToStr(a);
end
else
begin
        {inversion de a et de b}
        if (a>b) then
        begin
        temp := b;
        b := a;
        a := temp;
        end;

for i:=1 to b do
begin
TableauA[i] := i*a;
end;

for i:=1 to a do
begin
TableauB[i] := i*b;
end;

for i:=1 to a do
begin
        for j:=1 to b do
        begin
        if (TableauA[j] = TableauB[i]) then
        begin
        Edit3.Text := IntToStr(TableauA[j]);
        Exit;
        end;
        end;
end;

end;

end;
end.

Conclusion :


On déclare deux tableaux assez grand ou seront stockés les multiples de a dans TableauA et ceux de B dans TableauB.
Une boucle if else:
si a = b alors le ppcm(a,b) = a =b (logique)
sinon
on inverse a et b pour que a soit toujours le plus petit
deux boucles for
une pour remplir TableauA, on va de 1 à b car le dernier élément de TableauA sera a*b qui est forcément un multiple de a et de b.
De même pour remplir TableauB

Les tableau étant remplis on compare chaque éléments des deux tableaux grâce aux deux boucles for imbriqués.
Dans la deuxième boucle for la première fois que l'on rencontre l'égalité on
arrête le programme grâce à Exit afin de ne pas obtenir comme résultat a*b.

Voilà, j'espère que n'est pas été trop confu sinon si vous avez des questions n'hésitez pas à m'écrire un p'tit message!!

Codes Sources

A voir également

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.