Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hey,
ich bin momentan dran einen Primzahl Tester zu schreiben mit Java und hab soweit mein Code auch schon fertig. Ein Problem ist nur, dass mein Programm am Ende alle Primzahlen ausgibt die kleiner und gleich groß wie die eingegebenen Zahlen sind. Ich will aber, dass das Programm auch ausgibt, dass die eingegebene Zahl keine Primzahl ist. Ich bin zudem ein Anfänger also nicht wundern
Entweder ich steh komplett auf dem Schlauch gerade oder ich check es nicht wie ich das ausgeben lassen kann.
Danke im vorraus
Java:
import java.util.Scanner;
public class Primzahlen {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int usedNumber, minimumNumber = 1;
int i, n;
System.out.println("Geben sie Ihre gewünschte Zahl ein, die sie auf Primzahlen testen wollen");
System.out.println("Primzahl von");
usedNumber = scanner.nextInt();
for (i = minimumNumber ; i <= usedNumber ; i++) {
n = 2;
while (i % n !=0 && n <= i / 2) {
n = n + 1;
}
if (n >= i / 2 + 1 && i != 1) {
System.out.print(i + " ist eine Primzahl ");
}
scanner.close();
}
}
}
Also im Augenblick verstehe ich ehrlich gesagt nicht, was Du machen willst. Was bedeutet denn "Primzahl von".
Wenn Du prüfen willst, ob eine Zahl eine Primzahl ist, dann musst Du nur diese eine Zahl prüfen. Und da musst Du nur diese eine Zahl testen. Warum du da eine äußere Schleife hast, verstehe ich daher nicht.
Wenn du in der Schleife prüfst, ob i eine Primzahl ist:
Du musst also nur die äußere Schleife wegnehmen - da reicht dann ein einfaches ersetzen von i durch usedNumber - so Du testen willst, ob usedNumber eine Primzahl ist.
Versuche doch einfach darauf zu prüfen wie oft durch die Zahl geteilt werden kann. Nachdem du die Zahl eins ausgeschlossen hast, kann durch eine Primzahl ja nur einmal geteilt werden nämlich die Zahl mit sich selbst. Du kannst dann eine Zählvariable definieren und dann in einer schleife nach Prüfung in (if-anweisung Zahl%i) die Zählvariable immer wenn durch die Zahl geteilt wird um eins hochzählen lassen. Dann prüfst du wie oft durch die Zahl geteilt werden konnte und wenn das Ergebnis größer als eins ist handelt es sich nicht um eine Primzahl, ansonsten(else) schon.
Grundsätzlich funktioniert das, allerdings nicht wirklich optimal.
Es reicht zu testen, ob die Zahl überhaupt durch irgend etwas geteilt werden kann, was kleiner ist als diese Zahl oder - um genau zu sein - was kleiner ist als die Wurzel dieser Zahl, also Divisoren von d = 2 bis d <= sqrt(n).
Wenn man nicht nur eine Primzahl sucht, sondern alle Primzahlen von 0 ... n, dann bietet sich natürlich an, nur durch bereits gefundene Primzahlen zu teilen, aber ich denke, der OP will eben genau das nicht (Stichwort: ohne Array).