WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

pi(x) Primzahlen, Sieb des Erastothenes

 

neeleanna95
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2017, 12:26     Titel: pi(x) Primzahlen, Sieb des Erastothenes
  Antworten mit Zitat      
Hallo Ihr Lieben,
ich habe ein Problem. Ich muss am Dienstag 14.02. ein Programm geschrieben haben.
Die Aufgabe lautet:

Das Sieb des Eratosthenes ist ein Algorithmus zur Bestimmung aller Primzahlen bis zu einer
vorgegebenen Zahl N. Er funktioniert so: Zunächst schreibt man alle Zahlen 2, 3, . . . , N auf.
In jedem Schritt streicht man nun die Vielfachen der jeweils kleinsten noch übrig gebliebenen ¨
Zahl. Begründen Sie, dass am Ende dieses Verfahrens genau die Primzahlen kleiner als N
übrig bleiben. ¨
Überlegen Sie, wie man den Algorithmus schneller machen k önnte: Muss man beim Streichen
der Vielfachen einer Zahl n wirklich schon mit 2n, 3n, . . . beginnen und erst bei der
oberen Grenze N aufhören?
Implementieren Sie den Algorithmus in Matlab und erzeugen Sie so eine Liste der Primzahlen.
Wählen Sie N so groß, wie Rechenzeit und Speicherplatz sinnvollerweise erlauben.
Man bezeichne mit pi(x) die Zahl aller Primzahlen kleiner oder gleich x ∈ R > 0. Eine
berühmte von dem 15-jährigen Gauß aufgestellte (und erst hundert Jahre später bewiesene)
Vermutung besagt
limx→∞ pi(x) ·ln(x)/x= 1.
Uberprüfen / illustrieren Sie mithilfe eines geeigneten Plots oder einer Tabelle die Gültigkeit ¨
dieser Aussage, unter Verwendung der mit Ihrer Primzahlliste bestimmten Funktion pi(x).
Primzahlzwillinge sind Primzahlen im Abstand von 2. Es sei τ (x) die Zahl aller Primzahlzwillinge
kleiner oder gleich x. Plotten Sie τ (x) fur Ihre Primzahlliste. ¨
[* Ob unendlich viele Primzahlzwillinge existieren, ist eine offene Frage! Nach einer Vermutung
von Hardy und Littlewood (1923, vielleicht haben Sie den Kinofilm “Die Poesie des
Unendlichen” gesehen?) trifft dies zu, genauer:
limx→∞1/τ (x)· 2C2 Integralvon 2 (dt/(ln t)^2) bis x = 1,
C2 := Produkt(p>2 prim)(1 −1/(p − 1)^2)

.
Untersuchen Sie auch diese Vermutung anhand Ihrer Primzahltabelle. Berechnen Sie das
Integral dabei numerisch.]

Das Sieb des Erastothenes hab ich schon programmiert:
Code:

function primzahlvektor = prim (N)

a = 1:N;
for i = 2:fix(sqrt(N))   % fix rundet Richtung 0, da nur natürliche Zahlen betrachtet werden
    for s = (i*i):N         % Quadrate können keine Primzahl sein
        if(mod(a(s),i) ==0)     % prüfe ob die Zahl restlos teilbar ist
            a(s) = 0;       % Nicht Primzahl wird auf 0 gesetzt
        end
    end
end

primzahlvektor = a(a(1:length(a))~=0) % gebe nur Zahlen ungleich 0 aus
 


Soweit ich das probiert habe funktioniert das auch.
Wenn ich jetzt aber den Limes möchte für pi(x) gibt es immer einen Fehler.
Ich hatte das jetzt so versucht:
Code:

syms x ;

x=10;
f = @ (x) (prim(x)*(log(x)/x));
limit(sym (f), x, inf)
 


Könnt ihr mir vielleicht helfen?
Liebe Grüße Neele
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.02.2017, 13:35     Titel: Re: pi(x) Primzahlen, Sieb des Erastothenes
  Antworten mit Zitat      
Hallo neeleanna95,
Zitat:
Berechnen Sie das Integral dabei numerisch.

Das klingt nicht nach einem Job für sym .

1 ist keine Primzahl.
Man könnte noch Gerade Zahlen aus der Suche ausschließen.

Code:
primzahlvektor = a(a(1:length(a))~=0)
% Einfacher:
primzahlvektor = a(a~=0)
% Denn a geht immer von 1 bis length(a)


Zitat:
Wenn ich jetzt aber den Limes möchte für pi(x) gibt es immer einen Fehler.

Bitte poste noch eine vollständige Kopie der Fehlermeldung. Der gezeigte Code benötigt einen double als Input, so dass die symbolische Berechnung nicht funktionieren wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.