Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100

Diskutiere Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 im Java Basics - Anfänger-Themen Bereich.
P

Panda9296

Kann man das so lassen? Geht um die Anzahl, da es 25 sind, habe allerdings 26 und müsste dies eigentlich -1 nehmen... dann passt es... gibt es bessere bzw schönere Lösungen?
Code:
void taskTwo() {
        
        int i=1;
        int betweenSave=0;
        int numberOfPrime=0;
        boolean prime =true;
        while(i<=100) {
            for(int j =2;j<i-1;j++) {
                if(i%j==0) {
                    prime=false;
                }
            }if(prime&&i>betweenSave) {
                
                betweenSave=i;
                numberOfPrime++;
            }else {
                prime=true;
            }i++;
        }System.out.println("Die größte Primzahl von 1-100: "+betweenSave);
        System.out.println("Die Anzahl der Primzahlen von 1-100 ist: "+(numberOfPrime-1));
        System.out.println();
    }
 
T

thecain

gib dir doch mal alle Primzahlen aus und schau welche falsch ist...
 
J

JustNobody

Bitte räume Deinen Code auf.

a) Deine While Schleife ist eine übliche Zählschleife - da macht also eine for Schleife mehr Sinn als eine while Schleife.
b) Wozu hast Du die Variable betweenSave?

Und wenn die 1 keine Primzahl ist (Du prüfst das ja nicht), dann kannst Du auch die Schleife bei 2 loslaufen lassen. Du setzt da mit Deinem Wissen etwas voraus so dass Du die Zahl nicht prüfst.

Wenn das wirklich so ist, dass Du alle Zahlen ab 1 prüfen sollst, dann zähl einfach die Teiler.
Primzahl ist nur durch 1 und sich selbst teilbar. Also zählst Du die Anzahl der Teiler und nur wenn dies <=2 ist, dann ist es eine Primzahl.

Aber der Code macht so wenig Sinn, denn die Optimierung ist nun einmal:
a) Anfang bei 2
b) Ende der Überprüfung bei Wurzel der Zahl - Bei 12 macht es einfach keinen Sinn, weiter als 3 zu prüfen, denn 4*4 ist bereits 16. Und wenn es durch 4 teilbar ist, dann hast Du das schon ermittelt (hier bei der 3)
c) Und sobald Du einen Teiler hast, brichst du ab. Also bei der 12 um bei dem Beispiel zu bleiben: Ist durch 2 teilbar, also keine Primzahl. Die 3 und 4 muss ich nicht mehr prüfen!
 
P

Panda9296

betweenSave weil ich die größte primzahl ausgeben soll...dachte ich
 
J

JustNobody

Ah, ok. Also ist das die maxPrimzahlFound - Dann versteht man den Code gleich besser wenn man sprechende Namen verwendet.
 
T

TM69

Kann man das so lassen? Geht um die Anzahl, da es 25 sind, habe allerdings 26 und müsste dies eigentlich -1 nehmen... dann passt es... gibt es bessere bzw schönere Lösungen?
Code:
void taskTwo() {
       
        int i=1;
        int betweenSave=0;
        int numberOfPrime=0;
        boolean prime =true;
        while(i<=100) {
            for(int j =2;j<i-1;j++) {
                if(i%j==0) {
                    prime=false;
                }
            }if(prime&&i>betweenSave) {
               
                betweenSave=i;
                numberOfPrime++;
            }else {
                prime=true;
            }i++;
        }System.out.println("Die größte Primzahl von 1-100: "+betweenSave);
        System.out.println("Die Anzahl der Primzahlen von 1-100 ist: "+(numberOfPrime-1));
        System.out.println();
    }
Such doch einfach mal nach dem Sieb von Eratosthenes.
Eins der ersten Ergebnisse erbracht bei mir:
 
Thema: 

Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben