Primzahlen berechnen - Wieso unterschiedliche

Status
Nicht offen für weitere Antworten.

Baunty

Mitglied
Hallo Community,

ich bin gerade mehr aus langeweile dabei das Primzahlen Programm das ich geschrieben habe zu optimieren...
Ich bin auch schon relativ weit gekommen von dem 1. Entwurf bis jetzt ist es ca. 100 mal so schnell xD naja die erste version war auch unzumutbar :bae:

Jedenfalls habe ich eine Frage die ich mir einfach nicht erklären kann da sie aus Mathematischer und somit für mich auch logischer Sicht einfach so nicht sein kann.
Ich habe z.Z. diesen funktionierenden Quellcode :

Code:
private void berechnePrimzahlenNeu(int bis) {
        
        int i, j, z, anzahlprimzahlen=5;
        long begin = System.currentTimeMillis();
        long dif;
        
        int [] prim = new int[bis];
        
        
        //System.out.println("1");
        System.out.println(prim[0] = 1);
        System.out.println(prim[1] = 2);
        System.out.println(prim[2] = 3);
        System.out.println(prim[3] = 5);
        System.out.println(prim[4] = 7);
        
        
        
        for(i = 8; i<bis; i++) {
            
            z=0;

            for(j=0 ; j<anzahlprimzahlen;j++) {
                if (prim[j] < i / 2) {
                    if (i % prim[j] == 0) {
                        z++;
                        if (z > 1) {
                        break;
                        }
                    }
                }
            }
        
            
            if(z==1) {
                prim[anzahlprimzahlen++] = i;
                System.out.println(i);
            }
            
            
        }
        
        long ende = System.currentTimeMillis();
        dif = (ende - begin) / 1000;
        this.ausgabe(bis, anzahlprimzahlen, dif);
    }
    
    
    
    private void ausgabe(int grenze, int anzahl, long dif) {
        System.out.println("----------------------------");
        System.out.println("Bis " + grenze + " gibt es " +  anzahl  + " Primzahlen");
        System.out.println("Dauer : " + dif + " Sekunden");
    }

Die Ausgabe bei einem Parameter von 1 Millionen ist :
... alle primzahlen...
...
----------------------------
Bis 1000000 gibt es 78499 Primzahlen
Dauer : 50 Sekunden


Das Programm kontrolliert jetzt aber so das es die z.Z. behandelte Zahl durch alle Primzahlen teilt, also alle bisherigen Werte im prim array.
Der 1. Wert ist hier nunmal 1, durch 1 geteilt ergibt keinen Rest also wird z, die Variable die die Anzahl der Treffer zeigt, um eins hoch gezählt.
Sobald z nen 2. mal hochgezählt wird ist Ende und die behandelte Zahl ist keine Primzahl.
Den Schritt müsste ich doch überspringen können und einfach mit 2 Anfangen indem ich die for-schleife von j entweder mit 1 beginnen lasse oder das Primzahlen Array nicht mit 1 sondern mit 2 anfangen lasse...
aber egal wie ichs mach bei beidem kommt folgende Ausgabe :

----------------------------
Bis 1000000 gibt es 771427 Primzahlen
Dauer : 1390 Sekunden

Neuer Quellcode wäre :
Code:
 for(i = 8; i<bis; i++) {
            
            z=0;

            for(j=1 ; j<anzahlprimzahlen;j++) {
                if (prim[j] < i / 2) {
                    if (i % prim[j] == 0) {
                        //z++;
                        //if (z > 1) {
                        prim[anzahlprimzahlen++] = i;
                        System.out.println(i);
                        break;
                        //}
                    }
                }
            }
           
            /*
            if(z==1) {
                prim[anzahlprimzahlen++] = i;
                System.out.println(i);
            }
            */
            
        }


Kann mir das wer bitte erklären ich versteh´s einfach nicht ;-)
 

Baunty

Mitglied
Mein neuer Code zählt ja jedes mal Hoch wenn der Rest 0 ist das ist ja ganz falsch :shock:

Code:
 inner:
        for(i = 8; i<bis; i++) {
            
            z=0;

            for(j=1 ; j<anzahlprimzahlen;j++) {
                if (prim[j] < i / 2) {
                    if (i % prim[j] == 0) {
                        continue inner;
                    }
                }
            }
            prim[anzahlprimzahlen++] = i;
            System.out.println(i);
        }

So aber der hier braucht trotzdem 50 Sekunden obwohl ich 2 if Abfragen spare..
bringt das denn garnichts?
 

Marco13

Top Contributor
Ich glaube, das war das, was er versucht hatte
Das Programm kontrolliert jetzt aber so das es die z.Z. behandelte Zahl durch alle Primzahlen teilt, also alle bisherigen Werte im prim array.
???:L
Aber... wer weiß....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
kulturfenster Primzahlen berechnen Java Basics - Anfänger-Themen 11
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
B Primzahlen bis 100 addieren Java Basics - Anfänger-Themen 16
H Primzahlen finden - Zeit optimieren Java Basics - Anfänger-Themen 34
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
P Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 Java Basics - Anfänger-Themen 8
Java The Hutt Primzahlen - die ersten 100 Java Basics - Anfänger-Themen 17
N Erste Schritte Primzahlen-ArrayIndexOutOfBounds Java Basics - Anfänger-Themen 23
R Primzahlen Zähler Programm / Benachbarte Primzahlen Java Basics - Anfänger-Themen 30
D Klassen Primzahlen überprüfen Java Basics - Anfänger-Themen 3
I Primzahlen Java Basics - Anfänger-Themen 17
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
R primzahlen im array Java Basics - Anfänger-Themen 33
M Primzahlen, nur jede 2te ausgeben Java Basics - Anfänger-Themen 11
T Primzahlen Fehler Java Basics - Anfänger-Themen 4
K Primzahlen Java Basics - Anfänger-Themen 6
L Primzahlen im Array ausgeben Java Basics - Anfänger-Themen 3
P Primzahlen Java Basics - Anfänger-Themen 3
A Methoden Primzahlen erstellen von 1 bis 100-Codeprobleme Java Basics - Anfänger-Themen 2
H Variablenverfolgung - Primzahlen Java Basics - Anfänger-Themen 7
G Primzahlen Java Basics - Anfänger-Themen 6
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
S Primzahlen bis 1000 ausgeben Java Basics - Anfänger-Themen 3
K Methoden Primzahlen Java Basics - Anfänger-Themen 33
S Input/Output Primzahlen Datenbank Java Basics - Anfänger-Themen 11
F Primzahlen in Zahlenblöcken ausgeben Java Basics - Anfänger-Themen 9
M Primzahlen - es werden alle Nicht-Primzahlen ausgegeben Java Basics - Anfänger-Themen 5
M primzahlen Java Basics - Anfänger-Themen 4
S Programm zu Ermittlung von Primzahlen Java Basics - Anfänger-Themen 14
E Programm zum Primzahlen ausgeben-Fehler Java Basics - Anfänger-Themen 12
X Primzahlen Java Basics - Anfänger-Themen 7
S Primzahlen Java Basics - Anfänger-Themen 12
B Programmierobjekt - Primzahlen Java Basics - Anfänger-Themen 2
D Primzahlen ausgeben. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
N Primzahlen Java Basics - Anfänger-Themen 5
I Primzahlen check, String prüfen lassen. Java Basics - Anfänger-Themen 6
A OOP Programm zum bestimmen von Primzahlen, OutofBoundsException Java Basics - Anfänger-Themen 10
apple987123 Primzahlen Java Basics - Anfänger-Themen 12
A Primzahlen: ein paar offene Fragen Java Basics - Anfänger-Themen 2
T Primzahlen Java Basics - Anfänger-Themen 6
G Primzahlen Java Basics - Anfänger-Themen 18
B Primzahlen Algorithmus - wo ist der Fehler ? Java Basics - Anfänger-Themen 2
E Primzahlen Java Basics - Anfänger-Themen 5
B Primzahlen mit Array errechnen! Java Basics - Anfänger-Themen 13
H Miller Rabin Test Primzahlen werden teilweise nicht gefunden Java Basics - Anfänger-Themen 5
M Wer kann mir bei Primzahlen helfen ? Java Basics - Anfänger-Themen 4
G Frage zur Primzahlen berechnung Java Basics - Anfänger-Themen 11
D Primzahlen Java Basics - Anfänger-Themen 4
N Zerlegung in Primzahlen Java Basics - Anfänger-Themen 7
F Programm Primzahlen Java Basics - Anfänger-Themen 5
J Primzahlen errechnen.ArrayLists abgleichen Java Basics - Anfänger-Themen 2
M Primzahlen Java Basics - Anfänger-Themen 6
C Primzahlen Java Basics - Anfänger-Themen 7
C Primzahlen Java Basics - Anfänger-Themen 2
S Primzahlen Java Basics - Anfänger-Themen 49
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35

Ähnliche Java Themen

Neue Themen


Oben