Veröffentlicht 6. August 201015 j 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 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 6. August 201015 j von Glou
6. August 201015 j Ähm... hab das grad mal bei mir eingefügt und es funktioniert reibungslos?!? :confused:
6. August 201015 j 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!
6. August 201015 j 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.
6. August 201015 j 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?
6. August 201015 j 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.
6. August 201015 j 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.