Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Primzahlen bei Delphi finden - Hilfe (https://www.delphipraxis.net/111620-primzahlen-bei-delphi-finden-hilfe.html)

emery 6. Apr 2008 18:26


Primzahlen bei Delphi finden - Hilfe
 
hallo erstmal.. bin neu hier und hoffe ihr "profis" könnte mir helfen :)

folgendes problem : ich bin anfänger und habe wirklich wenig ahnung von delphi. ich soll ein programm erstellen, dass die primzahlen zwischen 2 werten die eingegeben werden anzeigt...
könnt ihr mir da weiterhelfen ??

lg, emery


ps: hatte keine ahnung wohin mit dem thread also hab ich den einfach hier reingemacht...

[edit=Matze]Sprache zu "Delphi Win32" geändert. MfG, Matze[/edit]

s-off 6. Apr 2008 18:29

Re: Primzahlen bei Delphi finden - Hilfe
 
Hallo,
Zitat:

Zitat von emery
ich soll ein programm erstellen

wieviel von Deinen Hausaufgaben hast Du denn bisher schon alleine gemacht? Soll heißen: wie sieht Dein Quellcode bisher aus, und an welcher Stelle kommst Du nicht weiter?

Komm jetzt nicht mit "Ich weiß nicht, wo ich anfangen soll"....
Dann lies Dir entsprechende Tutorials durch.

Desweiteren: Bist Du sicher, dass dieses Programm für das .NET-Framework, und nicht vielleicht doch für Win32 erstellt werden soll?

Larsi 6. Apr 2008 18:35

Re: Primzahlen bei Delphi finden - Hilfe
 
Also erstmal stellst sich da bei mir die Frage: Sicher dass du eine Net Anwendung programmieren willst?
Dann die Lösung^^:
Delphi-Quellcode:
uses
  math;

Function IsPrim(zahl : Integer): boolean;
var
i: integer;
begin
  result := true;
  If zahl = 1 then
  begin
    result := false;
    exit;
  end;
  For i := 2 to Trunc(sqrt(zahl))+1 do
  begin
    If ((zahl mod i) = 0) then
    begin
      result := false;
      exit;
    end;
  end;
end;

Label1.Visible:=IsPrim(4);
Also es ist nicht die Lösung aber schon mal ein Ansatz wie du eine Primzahl erkennst! Das mit dem dass ale Zahlen die zwischen zwei liegen herausfinden würde ich mit einer for- Schleife angehen!
Also sowas wie for 4 to 50!

emery 6. Apr 2008 18:43

Re: Primzahlen bei Delphi finden - Hilfe
 
also ich hab erstmal folgende oberfläche erstellt :


recht simpel soweit...
http://bilder-space.de/show.php?file...3oLHYWTe8j.jpg

edit: keine ahnung was eine Net Anwendung ist

Klaus01 6. Apr 2008 18:45

Re: Primzahlen bei Delphi finden - Hilfe
 
und wenn es etwas schneller sein soll, ein Beispiel aus der CodeLib.
Grüße
Klaus

kiar 6. Apr 2008 18:47

Re: Primzahlen bei Delphi finden - Hilfe
 
moin ,

google mal nach Sieb des Eratosthenes

raik

Larsi 6. Apr 2008 18:49

Re: Primzahlen bei Delphi finden - Hilfe
 
Zitat:

Zitat von emery
edit: keine ahnung was eine Net Anwendung ist

Net Anwendung ist eine Alternative zu dem was du machst was auch unter Delphi möglich ist. Nur bei deinem Beitrag hast du das ausgewählt dass du eine programmierst! Diese graue Figur da neben deinem Beitrag bedeutet das!

emery 6. Apr 2008 18:53

Re: Primzahlen bei Delphi finden - Hilfe
 
naja ich musste irgendwas angeben, damit der thread überhaupt erstellt wird.. :)

Fussball-Robby 6. Apr 2008 18:55

Re: Primzahlen bei Delphi finden - Hilfe
 
Womit hast du eigentlich Probleme? Mit der Logik, wie du die Primzahlen findest oder mit dem Umsetzen mit Delphi?

emery 6. Apr 2008 19:21

Re: Primzahlen bei Delphi finden - Hilfe
 
das umsetzen bei delphi....ich habe keine ahnung was man wo eingeben muss, damit irgendwas passiert...
ich weiß wie man ein beenden button erstellt ^^ close;

lg

Spiderpig_GER_15 6. Apr 2008 20:01

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.

bigben37 6. Apr 2008 20:40

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;

Spiderpig_GER_15 6. Apr 2008 20:53

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:
function isPrim(zahl: Integer): boolean;
was das ist hab ich keine Ahnung :pale:

Spiderpig

Namenloser 6. Apr 2008 21:27

Re: Primzahlen bei Delphi finden - Hilfe
 
Das ist die Deklaration der Funktion. :gruebel:

DP-Maintenance 6. Apr 2008 21:30

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

s-off 6. Apr 2008 23:07

Re: Primzahlen bei Delphi finden - Hilfe
 
Zitat:

Zitat von NamenLozer
Das ist die Deklaration der Funktion. :gruebel:

Naja, um genau zu sein ist dieser Ausdruck in diesem Fall Teil des Methodenrumpfes - die Deklaration wird vor dem Implementations-Teil vorgenommen :zwinker:

Fussball-Robby 7. Apr 2008 11:14

Re: Primzahlen bei Delphi finden - Hilfe
 
Zitat:

Zitat von s-off
Zitat:

Zitat von NamenLozer
Das ist die Deklaration der Funktion. :gruebel:

Naja, um genau zu sein ist dieser Ausdruck in diesem Fall Teil des Methodenrumpfes - die Deklaration wird vor dem Implementations-Teil vorgenommen :zwinker:

Und das soll der TE jetzt verstehen? :mrgreen:

RavenIV 7. Apr 2008 12:13

Re: Primzahlen bei Delphi finden - Hilfe
 
Zitat:

Zitat von Fussball-Robby
Und das soll der TE jetzt verstehen? :mrgreen:

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

Spiderpig_GER_15 7. Apr 2008 15:50

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 12:19 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