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