Einzelnen Beitrag anzeigen

Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Schätzen, wie viele Primzahlen es zwischen X1 und X2 gibt

  Alt 25. Aug 2006, 22:10
Aloha!

Mit Hilfe folgender Funktion kann man schätzen, wie viele Primzahlen es in dem Zahlenbereich zwischen X1 und X2 gibt, wobei X2 >= X1 ist.

Dazu stehen 3 Methoden zur Verfügung: 1. die "optimistische" Berechnung, die meistens über der tatsächlichen Zahl an Primzahlen liegt, 2. die "pessimistische", die praktisch immer darunter liegt und 3. das Verfahren von Legendre, das mal drüber und mal drunter liegt. Wirklich vorhersagbar sind alle drei nicht

Delphi-Quellcode:
uses System;

type
  TpMode = (pmOptimistic, pmPessimistic, pmLegendre);

function PrimesInRange(X1, X2: Cardinal; pMode: TpMode): Extended;
begin
  Result := 0;
  case pMode of
    pmOptimistic: Result := (x2 / (ln(x2) - 1)) - (x1 / (ln(x1) - 1));
    pmPessimistic: Result := (x2 / ln(x2)) - (x1 / ln(x1));
    pmLegendre: Result := (x2 / (ln(x2) - 1.08366)) - (x1 / (ln(x1) - 1.08366));
  end;
end;
Beispielaufruf:
Delphi-Quellcode:
blubb := PrimesInRange(0, 100, pmLegendre);
(*
pmOptimistic: 27,74
pmPessimistic: 21,71
pmLegendre: 28,40
tatsächlich: 25
*)
edit: vorgeschlagene Änderung von Flocke übernommen

  Mit Zitat antworten Zitat