Premier ou pas?

Description

Ce petit programme, qui est d'ailleurs mon premier vrai programme, est capable de dire si le nombre que l'on saisi est premier ou pas.
J'ai mis une limite de nombre pour ne pas que le calcul soit trop long et ralentisse l'ordinateur.
Il y a sûrement plein de choses inutiles dans le programme, mais c'est pour une compréhension visuelle de la chose, et aussi car j'ai voulu "explorer" quelques fonctionnalités du langage delphi.
J'ai même essayer de faire un raccourcis clavier via entrée.

Source / Exemple :


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
  i,c:integer;
  z,e:string;
  b,a,g:extended;
begin
  g:=strtofloat(edit1.text);
  a:=sqrt(g);
  c:=round(a);
  e:='Merci de bien vouloir respecter les consignes';
  if g>2000000000
  then edit2.Text:=e
  else
    begin
    if g=0
    then edit2.Text:=e;
    if int(g/2)=g/2
    then
    edit2.text:='Il est pair, donc pas premier'
    else
      begin
      i:=1;
      for i:=i+2 to c do
        begin
        b:=g/i;
        if int(b)=g/i
        then
          begin
          z:='Il n''est pas premier et impair';
          edit2.Text:=z
          end
        else
          begin
          if edit2.text=z
          then edit2.Text:=z
          else edit2.Text:='Il est premier et différent de 2, il est donc aussi impair';
          end;
        end;
      if edit2.Text=z
      then edit2.Text:=z
      else edit2.Text:='Il est premier et différent de 2, il est donc aussi impair';
      if g=1
      then edit2.Text:='1 n''est pas un nombre premier, car il a un seul diviseur dans N: lui-même';
      end;
    if g=2
    then edit2.Text:='2 est premier et pair, c''est le seul nombre premier pair';
    if edit2.Text=z
    then form1.color:=clred
    else form1.color:=clgreen;
    if edit2.Text='Il est pair, donc pas premier'
    then form1.Color:=clred;
  end;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  form1.Color:=clbtnface;
  edit2.Text:='Verdict';
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Var
  i,c:integer;
  z,e:string;
  b,a,g:extended;
begin
  if key=#13
  then
  begin
    g:=strtofloat(edit1.text);
    a:=sqrt(g);
    c:=round(a);
    e:='Merci de bien vouloir respecter les consignes';
    if g>2000000000
    then edit2.Text:=e
    else
      begin
      if g=0
      then edit2.Text:=e;
      if int(g/2)=g/2
      then
      edit2.text:='Il est pair, donc pas premier'
      else
        begin
        i:=1;
        for i:=i+2 to c do
          begin
          b:=g/i;
          if int(b)=g/i
          then
            begin
            z:='Il n''est pas premier et impair';
            edit2.Text:=z
            end
          else
            begin
            if edit2.text=z
            then edit2.Text:=z
            else edit2.Text:='Il est premier et différent de 2, il est donc aussi impair';
            end;
          end;
        if edit2.Text=z
        then edit2.Text:=z
        else edit2.Text:='Il est premier et différent de 2, il est donc aussi impair';
        if g=1
        then edit2.Text:='1 n''est pas un nombre premier, car il a un seul diviseur dans N: lui-même';
        end;
      if g=2
      then edit2.Text:='2 est premier et pair, c''est le seul nombre premier pair';
      if edit2.Text=z
      then form1.color:=clred
      else form1.color:=clgreen;
      if edit2.Text='Il est pair, donc pas premier'
      then form1.Color:=clred;
    end;
  end;
end;

end.

Conclusion :


Je suis ouvert à toutes les critiques et conseils

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.