Glou Geschrieben 6. August 2010 Geschrieben 6. August 2010 (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 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 2010 von Glou Zitieren
nubbeldupp Geschrieben 6. August 2010 Geschrieben 6. August 2010 Ähm... hab das grad mal bei mir eingefügt und es funktioniert reibungslos?!? :confused: Zitieren
Guybrush Threepwood Geschrieben 6. August 2010 Geschrieben 6. August 2010 jedoch tritt ein Fehler auf Und wir sollen jetzt raten welcher Fehler? Zitieren
Glou Geschrieben 6. August 2010 Autor Geschrieben 6. August 2010 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! Zitieren
_n4p_ Geschrieben 6. August 2010 Geschrieben 6. August 2010 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. Zitieren
Glou Geschrieben 6. August 2010 Autor Geschrieben 6. August 2010 Vielen lieben Dank! Habs genau so geändert & jetzt klappts Dankeschön! Zitieren
lbm1305 Geschrieben 6. August 2010 Geschrieben 6. August 2010 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? Zitieren
TDM Geschrieben 6. August 2010 Geschrieben 6. August 2010 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. Zitieren
lbm1305 Geschrieben 6. August 2010 Geschrieben 6. August 2010 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. ;-) Zitieren
lilith2k3 Geschrieben 6. August 2010 Geschrieben 6. August 2010 Sieb des Eratosthenes ? Wikipedia Zitieren
Empfohlene Beiträge
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.