Input/Output Code wird doppelt ausgeführt

IceDegu

Neues Mitglied
Moin ich habe das Problem, dass bei meinem Output sich die Primzahlen unregelmäßig wiederholen bevor es zur nächsten geht. Ich bin bei java noch recht neu kann mir ggf. wer helfen?



Code:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        
        Scanner sc = new Scanner(System.in);
        
        
        //Abfrage nach min Max Zahlenbereich
        
        System.out.println("Dies ist ein Primzahlenfinder");
        System.out.println("Bitte geben sie ihre Anfangszahl an vond er Gesucht werden soll");
        int ZahlK = sc.nextInt();
        System.out.println("Bitte geben sie ihre Maximalzahl an bis zu der gesucht werden soll");
        int ZahlG = sc.nextInt();
        int i;
        String fileName = "out.txt";
        
        //Primzahlen erkenner
        //i/2 da über hälfte bei teilern suchen kein sinn macht
        //For ist bis zahllimit erreicht wird

        File filel = new File("out.txt");
        
        FileWriter fw = new FileWriter(filel);
        
        PrintWriter pw = new PrintWriter(fw);
        
        
        for (i = ZahlK; i <= ZahlG; i++) {
            int n = 2;
            //Teilersuchen
            while (i % n != 0 && n <= i / 2) {
                n++;
                
                pw.println(i + " ist eine Primzahl");
                
                
                
                
            }
            
            
            
            //Falls keiner gefunden wurde zahl posten
            // Nachträglicher Zusatz 1 ist keine Primzahl obwohl die oben genannten eigenschaften zustimmen daher ungleich 1
        if (n >= i / 2 +1 && i !=1) {
            
        }
        /*else {
            System.out.println(i + " ist keine Primzahl");
        }*/
            
            
            
        }
        
        
        pw.close();
    }

}
 
Java:
        for (i = ZahlK; i <= ZahlG; i++) {
            int n = 2;
            //Teilersuchen
            while (i % n != 0 && n <= i / 2) {
                n++;
                
                pw.println(i + " ist eine Primzahl");
                
                
                
                
            }

Sollte
Java:
        for (i = ZahlK; i <= ZahlG; i++) {
            int n = 2;
            //Teilersuchen
            if (i % n != 0 && n <= i / 2) {
                n++;
                
                pw.println(i + " ist eine Primzahl");
                
                
                
                
            }

sein denke ich.
 

Zurück
Oben