Zum Inhalt springen

Primzahlen erkennen


Glou

Empfohlene Beiträge

Hallo.

Ich habe ein Problem und bin nicht ganz sicher, ob ich hier an der richtigen Stelle bin bzw. hab auch nicht gesehen, ob das schonmal gefragt wurden, also Sorry schonmal falls schon :P

Bin seit 3 Tagen dabei C# zu lernen und habe nun die Aufgabe bekommen, ein Programm zu schreiben, welches eine Zahl einliest und ausgeben soll, ob es sich um eine Primzahl handelt oder eben nicht.

Das Grundgerüst habe ich (denke ich) soweit fertig, jedoch tritt ein Fehler auf. Kann mir ungefähr vorstellen, wo der Fehler ist, hab leider momentan aber keine Ahnung wie der zu beheben ist.


class Primzahl

{

    static void Main(string[] args)

    {

        int i;

        bool prim = true;

        int teiler;


        Console.Write("Geben Sie eine Zahl ein: ");

        string eingabe = Console.ReadLine();

        int wert = Convert.ToInt32(eingabe);


        for (i = 2; i <= wert; i++)

        {

            prim = true;

            for (teiler = 2; teiler < i; teiler++)

            {

                if ( i % teiler == 0)

                {

                        prim = false;

                        Console.WriteLine("Die Zahl {0} ist keine Primzahl!", wert);

                        goto Ende;

                }

                else if (i % teiler != 0)

                { }

            }

        }


        if (prim == true)

        {

            Console.WriteLine("Die Zahl {0} ist eine Primzahl!", wert);

        }


        Ende:

        Console.ReadLine();

    }

}

Gruß, Glou

Bearbeitet von Glou
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja also der Debugger erkennt auch keinen Fehler, aber wenn ich zum Beispiel die Zahl 5 in die Konsole eingebe, kommt als Antwort, dass es keine Primzahl sei. Da kann ja also irgendwas nicht stimmen..

Hätte das vielleicht vorher schon schreiben sollen, sorry!

Link zu diesem Kommentar
Auf anderen Seiten teilen

du initialisierst i und teiler mit 2 und fragst dann

i % teiler == 0

diese bedingung ist wahr.

was du eingibst is völlig egal.

die äußere schleife ist qutasch, genau wie das if im else zweig, gibts ja nur 2 fälle.

und die if bedingung einfach in (wert % teiler == 0) {} else {} ändern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal eine andere Vorgehensweise. Ohne große Berechnung.



            int eingabe = 26;

            bool[] prim = new bool[eingabe];



            for (int i = 2; i < eingabe; i++)

            {

                prim[i] = true;

            }


            for ( int i = 2; i < eingabe; i++ )

            {

                if(prim[i])

                {

                    Console.WriteLine(i);

                    for (int j = i+i; j < eingabe; j=j+i)

                    {

                        prim[j] = false;

                    }

                }

            }

Kann man überhaupt einen bool-Array mit true initialisieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...