Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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!

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.

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?

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.

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.