Entwickler-Ecke

Sonstiges (Delphi) - Primzahlen


Fabian - Mo 12.08.02 17:24
Titel: Primzahlen
Hallo

Wie kann ich prüfen ob es sich bei einer Zahl um eine Primzahl handelt.
(Ob sie durch 1 und sich selbst teilbar ist).


Spike - Mo 12.08.02 17:32

Hallo,

schau mal hier [http://www.roro-seiten.de/info/a9/1einfuehrung/additum9_einfuehrung.html] nach unter Punkt 1.3.
Hoffe das hilft dir weiter.

Spike


lemming - Di 13.08.02 08:59

Hey Fabian,

ich mache gerade auch was in Delphi mit Primzahlen. Hab hier schon einen unoptimierten Code.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
  repeat
    iCount := iCount + 1;
    bNoPrim := False;
    for iNummeric := iCount - 1 DownTo 2 do
      if Pos(',', FloatToStr(iCount / iNummeric)) = 0 then
      begin
        Writeln(IntToStr(iCount) + ' teilbar durch ' + IntToStr(iNummeric));
        bNoPrim := True;
        Break;
      end;
    if bNoPrim = False Then Writeln(IntToStr(iCount) + ' PRIM');
  until iCount = 9223370000000000000;


Unoptimiert deshalb weil er tausende unnützer rechen operatoren macht. Alle Zahlen die gerade sind brauch er ja gar nicht erst probieren.

Mein größeres Problem ist aber eher das ich Primzahlen mit über 4 Millionen stellen berechnen will, und das geht halt nicht mit Int64. Da hab ich nur 19.[/code]


MathiasH - Di 13.08.02 12:19

@ lemming: du kannst ja die halbe unit math und das ganze zeug neu schreiben, da kannst du deinen Datentyp (fast) so gros wie du willst machen, die Frage ist nurnoch ob der CPU damit vernünfig arbeitet und du für die Sache kein PRMI@home starten musst :wink:

MathiasH


Alfons-G - Di 13.08.02 12:39

Es gibt bei Torry eine Bibliothek BigMath oder BigNum oder so ähnlich zum Download, mit der man (fast) beliebig grosse Zahlen verarbeiten kann. Such mal dort mit dem Stichwort math.

:idea: