![]() |
Primzahlen ausrechnen mal anders...
Hi!
Ich bin gerade dabei eine Methode zu entwickeln, wie man die Primzahlen von 1 bis 1000000 ausrechnet. Ich kenne das Sieb des Eratosthenes kenn ich schon, aber ich wollte mal was anderes ausprobieren. Mein bisheriger Code rechnet wie verrückt aber spuckt nichts aus... woran liegt das?
Delphi-Quellcode:
ich bin echt am verzweifeln... :cry:
const N=1000000;
var k,zz,z:longint; a:array[1..N] of longint; prim:boolean; procedure ifprim(zahl:longint); begin for k:=1 to z do begin if not zahl=k then if zahl mod a[k]=0 then prim:=false else begin prim:=true; z:=z+1; a[z]:=zahl; break; // write(a[z]:8); // z:=z+1; end; end; if prim then for k:=a[z] to zahl do begin if not zahl=k then if zahl mod k=0 then prim:=false else begin prim:=true; a[z]:=zahl; write(a[z]:8); break; // z:=z+1; end; end; if prim then begin // write(a[z]:8); z:=zahl; end; end; begin a[1]:=2; a[2]:=3; z:=2; prim:=true; writeln('Begin?'); readln; write(a[1]:8,a[2]:8); for zz:=3 to N do begin ifprim(zz); end; end. gruß Teekeks [edit=Luckie]Rechtschreibfehler im Titel korrigiert. Primzahl schreibt man ohne "ie". ;) Mfg, Luckie[/edit] [ich auch edit] Ich hab die anderen korrigiert... ^^[/edit] |
Re: Priemzahlen ausrechnen mal anders...
Ist z initialisiert? Und mit was?
|
Re: Priemzahlen ausrechnen mal anders...
z, B. diese Zeile
Delphi-Quellcode:
bringt Dich nicht so wirklich weiter, da Du im Hauptprozedurrumpf z einmalig mit 2 initialisierst. Da kann in den nachfolgenden Abrfagen nie was gefunden werden.
for k:=1 to z do
so als erster Anhaltspunkt, Deinen Code durchschaue ich irgendwie nicht so ganz. Erklähr mal, wie es eigentlich funktionieren sollte. Gruß Thomas Abgesendet trotz rotem Kasten, mkienzlers Frage wird gleich mitbeantwortet ;-) |
Re: Priemzahlen ausrechnen mal anders...
Ich vermute mal, es ist die (nicht optimierte) Probedivision.
In diesem Fall würde ich auch um ein paar Erläuterungen bitten, da der Code wirklich nicht allzu klar ist ... P.S. Prim schreibt man wie Primzahl ohne "e" ;) :mrgreen: |
Re: Priemzahlen ausrechnen mal anders...
Also ok. Der Code soll Primzahlen raussuchen (von 1 bis 1000000) und zwar nach folgendem Chema (wie schreibt man das nun schon wieder??)
Soll in dem array mit den bisherigen Primzahlen gucken ob dort eine glatte Division geht, wenn ja --> rausspringen und nächste Zahl drannehmen. Wenn nicht --> gucken ob im Rest bis (optimiert trunc(sqrt(zahl))) irgentwo mod=0 vorkommt. Wenn ja --> rausspringen und nächste Zahl. Wenn nicht --> Zahl ausgeben und im array Abspeicher. z+1 setzen. Ich weis nurnicht, warum der das nicht macht :( |
Re: Priemzahlen ausrechnen mal anders...
Hallo,
abgesehen vom undurchsichtigen Algorithmus:
Code:
Gruß Hawkeye
"if not zahl=k then" <> "zahl <> k"
|
Re: Priemzahlen ausrechnen mal anders...
Ziel: Primzahlen raussuchen (von 1 bis 1.000.000)
Schema:
Ist eine Zahl durch irgendeine Primzahl kleiner der Zahl teilbar, so ist die Zahl definitiv keine Primzahl, anderenfalls ist es eine. Wozu also die weiteren Überprüfungen? Gruß Thomas |
Re: Primzahlen ausrechnen mal anders...
hmmm. Stimmt auch irgentwie...
|
Re: Primzahlen ausrechnen mal anders...
Ichhabe mal den Rechtschreibfehler im Titel korrigiert. Primzahl schreibt man ohne "ie". Die Fehler im Code kannst du selber verbessern.
|
Re: Primzahlen ausrechnen mal anders...
Hallo Teekeks,
benutzte doch bitte die in der deutschen Schriftform übliche Groß- und Kleinschreibung. Dadurch wird der Text leichter lesbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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