![]() |
Programm für Primzahlzwillinge
Hallo Leute,
ich muss für die Schule ein Programm schreiben, das aus einem bestimmten Zahlenbereich (z.B. 1-20) alle Primzahlzwillinge auflistet. Primzahlzwillinge sind zwei Primzahlen, die genau eine Zahl "zwischen" sich haben (z.B. 3,5 oder 11,13). Ich hab auch schon ein Programm geschrieben, das läuft nur nicht ganz richtig :wall: . Könnt ihr mir helfen? Hier das Programm:
Delphi-Quellcode:
tia, gordon Freeman
unit Unit1;
interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; m: TLabel; n: TLabel; Primzahlenzwillinge: TLabel; Rechnen: TButton; Ende: TButton; procedure EndeClick(Sender: TObject); procedure RechnenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; m,n,x,i,h,u,zaehler,code:integer; xstr,mstr:string; implementation {$R *.DFM} procedure TForm1.EndeClick(Sender: TObject); begin close end; procedure TForm1.RechnenClick(Sender: TObject); begin val(form1.edit1.text,m,code); val(form1.edit2.text,n,code); for i:=m to n do //Primzahlentest begin zaehler:=0; for h:=1 to m do if m mod h=0 then zaehler:=zaehler+1; end; //Zwillingstest begin if zaehler=2 then x:=m+2; zaehler:=0; for u:=1 to x do if x mod u=0 then zaehler:=zaehler+1; if zaehler=2 then begin str(x,xstr); str(m,mstr); memo1.lines:=memo1.lines+mstr+','+xstr+';'; end; end; end; end. [edit=sakura] [delphi]-Tags gesetzt. Bitte in Zukunft selbst tun UND etwas mit Code-Einrückung arbeiten. Mfg, sakura[/edit] |
Re: Programm für Primzahlzwillinge
Habe mir deinen Code jetzt nicht weiter durchgelsen, da ich der Meinung bin, dass es eigentlich viel einfacher geht ... hier mein Vorschlag:
Delphi-Quellcode:
Brauchst für dein Prog zwei Edits, einen Button und eine ListBox zur Ausgabe. Fertig :zwinker:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} Function Primzahl(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 start, ende, i: Word; begin start := StrToInt(Edit1.Text); ende := StrToInt(Edit2.Text); for i := start to ende do begin if Primzahl(i) then begin if (Primzahl(i+2)) and (i+2 <= ende) then ListBox1.Items.Add(IntToStr(i) + ' & ' + IntToStr(i+2)); end; end; end; end. |
Re: Programm für Primzahlzwillinge
Hallo miteinander,
@Wheelie: Ich möchte etwas zu deinem Code bemerken: Du hast in der Funktion Primzahl eine For-Schleife für i:=2 to (Zahl div 2). Man kann die Funktion etwas schneller machen, in dem du (Zahl div 2) durch Trunc(sqrt(Zahl)) ersetzt. Denn die Wurzel reicht zum überprüfen ob eine Zahl prim ist aus und ist kleiner als die Hälfte. Grüße Seniman |
Re: Programm für Primzahlzwillinge
danke für den hinweis :thuimb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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