C# Primzahlen ausgeben - Problem!

3 Antworten

Dein Code ist bissi komisch.

In Variablen solltest Du keine Umlaute verwenden, dass kann zu sehr komischen Fehlern führen. Wenn Du den Fehler in Deinem Programmcode finden willst, dann lass Dir an verschiedenen Stellen mal Ausgeben, was in den Variablen drinsteht

Ich hab Dir mal kurz eine Variante geschrieben, wie man das lösen kann ohne z.B. die 2 von Hand noch in die Ausgabe der Primzahlen zu setzen

namespace Primzahlenausgabe
{
class Zahl
{
    // prüfe ob die Zahl eine Primzahl ist
    // true bei Primzahl, sonst false
    public bool IsPrime(int value)
    {
        if (value <= 1)
            return false;
        else
        {
            if (value > 2)
            {
                for (int i = 2; i <= (value / 2) + 1; i++)
                    if (value % i == 0)
                        return false;
            }
        }
        return true;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Anzahl der gefundenen Primzahlen
        int counter = 0;
        // Anzahl der auszugebenden Primzahlen
        int anzPrimzahlen = 50;
        // Objekt Zahl erzeugen
        Zahl zahl = new Zahl();

        Console.WriteLine("*** Ausgabe der ersten " + anzPrimzahlen + " Primzahlen ***");
        Console.WriteLine();
        
        for (int i = 0; counter < anzPrimzahlen; i++)
        {
            // Ausgabe nur dann, wenn die Zahl eine Primzahl ist
            if (zahl.IsPrime(i)) 
            {
                counter++;
                
                // Zeilenumbruch nach 10 Zahlen
                if (counter % 10 != 0) 
                {
                    // schreibe in einer Zeile
                    Console.Write(i + "\t");
                }else 
                {
                    // setze Zeilenumbruch
                    Console.Write(i + "\n");
                }
            }
        }
        Console.Read();
    }
}
}

Debugge doch einfach mal...

Cursor in die "for-Zeile" setzen, F9 drücken um einen Breakpoint zu setzen, dann F5 um zu starten und dann kannst du mit F10 jede Anweisung Schritt für Schritt ausführen. Und wenn du wissen willst was gerade in den Variablen ist, einfach Maus drüber halten.

Dann findest du deinen Fehler wesentlich schneller weil du direkt sehen kannst was er so macht (dann bist du auch nicht auf die Konsolenausgabe angewiesen um die Ausführung nachzuvollziehen)

Mir kommt es ungewöhnlich vor, dass du 3 verschiedene Zähler hast. Muss das wirklich sein? Der deutsche Umlaut "ä" wirkt in den Augen eines Programmierers sehr ungewohnt. Zähler setzt du auf 0. Die Schleife durchläufst du, solange er gleich 99 ist.

Woher ich das weiß:Berufserfahrung – Programmierer

Zane24 
Fragesteller
 03.11.2014, 11:09

Danke für deine Antwort! Habs gerade gemerkt mit dem Zähler. Habs auf Zähler <= 99 umgeändert und jetzt funktionierts! :)

1