AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Primzahlen ausrechnen mal anders...
Thema durchsuchen
Ansicht
Themen-Optionen

Primzahlen ausrechnen mal anders...

Ein Thema von Teekeks · begonnen am 28. Jan 2009 · letzter Beitrag vom 29. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

Primzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 20:37
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:
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.
ich bin echt am verzweifeln...

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]
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Priemzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 20:42
Ist z initialisiert? Und mit was?
Markus Kinzler
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#3

Re: Priemzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 20:43
z, B. diese Zeile     for k:=1 to z do 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.

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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Priemzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 20:45
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"
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Priemzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 20:52
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
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Priemzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 20:54
Hallo,

abgesehen vom undurchsichtigen Algorithmus:

Code:
"if not zahl=k then" <> "zahl <> k"
Gruß Hawkeye
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#7

Re: Priemzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 21:21
Ziel: Primzahlen raussuchen (von 1 bis 1.000.000)
Schema:
  • soll in dem array mit den bisherigen primzahlen gucken ob dort ne glatte division geht, wenn ja --> rausspringen und nächste zahl drannehmen.
soweit ok
  • 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.
Wozu soll das noch gut sein?
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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Primzahlen ausrechnen mal anders...

  Alt 29. Jan 2009, 05:18
hmmm. Stimmt auch irgentwie...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Primzahlen ausrechnen mal anders...

  Alt 29. Jan 2009, 08:00
Ichhabe mal den Rechtschreibfehler im Titel korrigiert. Primzahl schreibt man ohne "ie". Die Fehler im Code kannst du selber verbessern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Primzahlen ausrechnen mal anders...

  Alt 29. Jan 2009, 08:13
Hallo Teekeks,

benutzte doch bitte die in der deutschen Schriftform übliche Groß- und Kleinschreibung. Dadurch wird der Text leichter lesbar.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz