Einzelnen Beitrag anzeigen

Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#11

Re: Primzahlen bei Delphi finden - Hilfe

  Alt 6. Apr 2008, 21:01
coole sache, ich kann auch mal helfen!

ich bin auch recht neu in delphi und hab mir 'just for fun'
die aufgabe gestellt sowas zu programmieren. Habs sogar geschafft !
also, du kannst dir den quellcode gerne mal anschauen, ich bin mir aber sicher er ist nicht perfekt, und optimiert erst recht nicht,
außerdem hab ich das für mich gemacht also sind die variablen wahrscheinlich für andere sehhr wenig aussagekräftig, aber wie gesagt es funktioniert.

öhm, in deinem ansatz sieht es so aus als wolltest du die primzahlen in einem memo anzeigen?
Bei mir ist es so das er sie in einer textdatei speichert, in dem ordner in dem sich auch das prog befindet!(erst wenn man das prog beendet)


hoffe ich konnte helfen

Spiderpig

PS nochwas, das prog berechnet die primzahlen von 0-x und nicht von x-y!

Delphi-Quellcode:
  
unit PrimzahlenI;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Panel1: TPanel;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Memo2: TMemo;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Edit2: TEdit;
    Button2: TButton;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


var
  Form1: TForm1;
maxzahl:integer;
nr, zahl,test:integer;
prim: array[1..1000001] of boolean; //Arrays sind alle false
speicherdat: tstringlist;
pfad:string;
prufzahl,divv:integer;
janein:boolean;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

try
maxzahl:=strtoint(edit1.text); //Bereich ist von 0 bis Maxzahl;

repeat //
inc(nr); // Arrays sind jetzt true
prim[nr]:=true; // true = Primzahl
until nr=1000001; //

repeat
inc(zahl); // Zahl die auf Primzahl sein geprüft werden soll

divv:=1; // der Teiler der die zahl durch alle kleineren Zahlen als Zahl teilt
repeat
inc(divv);
if zahl mod divv = 0 then
prim[zahl]:=false; //false bedeutet ist keine Primzahl mehr
if zahl = 1 then // Ausnahme für die Eins
prim[1] := false; // Eins wird false zugeordnet da 1 keine Primzahl ist
if zahl = 2 then
prim[2] := true;
until ((divv) > (zahl/2)) or ((zahl = 1 ) and (divv = 2)) or ((zahl = 2) and (divv=2));

until zahl=maxzahl;

speicherdat.add('Copyright by Int3g3r');
speicherdat.add('');

repeat
inc(test);
if prim[test] = true then
  speicherdat.add(inttostr(test));
  until test = maxzahl;

pfad:='Primzahlen zwischen 1 und ' + inttostr(maxzahl) + '.txt';
label1.caption:='Die Datei wurde angelegt';
label2.caption:='und wird in dem Ordner'  ;
label3.caption:='gespeichert in dem sich'  ;
label4.caption:='dieses Programm befindet.';

except
edit1.text:='Nur ganze Zahlen!';

end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
speicherdat:= tstringlist.create;
divv:=1;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
speicherdat.Add('');
speicherdat.Add('Im Bereich von 0 bis ' + inttostr(maxzahl));
speicherdat.add('sind ' + inttostr(speicherdat.count - 4) + ' Primzahlen.');
speicherdat.add('');
speicherdat.add('--------------------');
speicherdat.savetofile(pfad);
except form1.Close;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
janein:=true;
divv:=1;
try
prufzahl:=strtoint(edit2.text);
except
edit2.text:='Nur ganze Zahlen!';
end;


if (prufzahl=1) or (prufzahl=2) then
   janein:=true
else
begin
repeat
inc(divv);
if prufzahl mod divv = 0 then
  janein:=false;



until divv = prufzahl - 1;
end;

if janein then
edit2.text:='Die Zahl ' + inttostr(prufzahl) + ' ist eine Primzahl.'
else
edit2.Text:='Die Zahl ' + inttostr(prufzahl) + ' ist keine Primzahl.' ;



end;

end.
Angehängte Dateien
Dateityp: exe primi_118.exe (397,0 KB, 6x aufgerufen)
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat