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