![]() |
Re: Primzahlen bei Delphi finden - Hilfe
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
Re: Primzahlen bei Delphi finden - Hilfe
Also ich mach das so, wenn ich Primzahlen zwischen 2 Zahlen haben will:
Delphi-Quellcode:
function isPrim(zahl: Integer): boolean;
var i: Integer; begin result := true; if zahl = 1 then begin result := false; exit; end; for i := 2 to zahl div 2 do begin if zahl mod i = 0 then begin result := false; exit; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var x, y, i: Integer; begin x := StrToInt(Edx.Text); y := StrToInt(Edy.Text); for i := x to y do begin if isPrim(i) then begin Memo1.Lines.Add(IntToStr(i)); end; end; end; |
Re: Primzahlen bei Delphi finden - Hilfe
okay, hätt ich vor 2 wochen doch nur gewusst das es soo einfach ist.
wobei ich es immernoch nicht komplett check :wall:
Delphi-Quellcode:
was das ist hab ich keine Ahnung :pale:
function isPrim(zahl: Integer): boolean;
Spiderpig |
Re: Primzahlen bei Delphi finden - Hilfe
Das ist die Deklaration der Funktion. :gruebel:
|
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Windows API / MS.NET Framework API" nach "Sonstige Fragen zu Delphi" verschoben.
Kein Problem mit der Windows-API (o.Ä.) |
Re: Primzahlen bei Delphi finden - Hilfe
Zitat:
|
Re: Primzahlen bei Delphi finden - Hilfe
Zitat:
|
Re: Primzahlen bei Delphi finden - Hilfe
Zitat:
Er soll sich die Anfängertutorials reinziehen. Oder den Stoff des Unterrichts nochmal anschauen. Sorry, aber wir sind nicht dazu da, einem Einsteiger das Grundwissen zu vermitteln. Auch nicht dafür, dass wir einem "Faulpelz" eine komplette Lösung vorlegen, mit der er dann prahlen kann ohne es zu verstehen. |
Re: Primzahlen bei Delphi finden - Hilfe
ja schon, aber bis jetzt, ich lern gerde nach einem buch, kenn cih erst klick/change proceduren etc und nciht so was...
bin halt noch am anfang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz