Zum Inhalt springen

Primzahlen erkennen


Empfohlene Beiträge

Geschrieben (bearbeitet)

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
Geschrieben

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!

Geschrieben

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.

Geschrieben

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?

Geschrieben

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

Initialisieren nicht, aber man könnte sowas machen:


            bool[] ba = new bool[99];

            Array.ForEach<bool>(ba, ( => b = true);[/code]

Warum zählst du bis [i]eingabe[/i]? Die Hälfte reicht doch.

Geschrieben

Warum zählst du bis eingabe? Die Hälfte reicht doch.

Weil ich den Algorithmus irgendwo in meine Verzeichnissen gefunden habe und dann einfach nur kopiert habe. Vor ein paar Jahren war das erst Mal ausreichend. ;-)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...