C# :: Aufgabe #60 :: Lösung #6
9 Lösungen

#60
vollkommene Zahl (Mathematisches Problem)
Anfänger - C#
von bibir
- 03.09.2014 um 08:21 Uhr
Man nennt eine natürliche Zahl N "vollkommen", wenn die Summe aller echten Teiler von N gleich N ist.
Zum Beispiel ist 28 eine vollkommene Zahl, da 1 + 2 + 4 + 7 + 14 = 28 ist.
Schreibe ein Programm/Skript, das beliebig oft eine Zahl N (mit 0 < N < 100000) einliest und feststellt, ob N eine vollkommene Zahl ist. Falls ja, soll das Programm N und die zugehörenden echten Teiler ausgeben, andernfalls ist nur N und die Meldung "ERFUELLT DIE BEDINGUNG NICHT" zu drucken.
Zum Beispiel ist 28 eine vollkommene Zahl, da 1 + 2 + 4 + 7 + 14 = 28 ist.
Schreibe ein Programm/Skript, das beliebig oft eine Zahl N (mit 0 < N < 100000) einliest und feststellt, ob N eine vollkommene Zahl ist. Falls ja, soll das Programm N und die zugehörenden echten Teiler ausgeben, andernfalls ist nur N und die Meldung "ERFUELLT DIE BEDINGUNG NICHT" zu drucken.
#6

von n.rohde (400 Punkte)
- 17.08.2015 um 17:05 Uhr

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PerfekteZahl { class Program { static void Main(string[] args) { int zahl, summeDerTeiler=0, j=0; string[] teiler = new string[100000]; int laenge=0; Console.WriteLine("Zahlenprüfer: Vollkommende Zahlen"); do { do { Console.Clear(); summeDerTeiler = 0; Console.Write("Bitte geben Sie eine Zahl zwischen 0 und 100000 ein: "); zahl = Convert.ToInt32(Console.ReadLine()); } while(zahl < 0 || zahl > 100000); // Überprüfung auf richtige Eingabe for (int i=1;i<zahl;i++) { if (zahl % i == 0) { summeDerTeiler = summeDerTeiler + i; // summieren aller Teiler durch die Variable i teiler[j] = Convert.ToString(i); // speichern der einzelnen Teiler in Variable teiler j++; } } teiler[j] = "\0"; j = 0; if (zahl == summeDerTeiler) { Console.WriteLine('\n'+Convert.ToString(zahl) + " ist eine vollkommene Zahl"); Console.Write("echte Teiler sind: "); // Ausgabe der Teiler for (int i=0;teiler[i]!="\0";i++) { if (teiler[i+1]=="\0") Console.WriteLine(teiler[i]); else Console.Write(teiler[i]+" "); } } else { Console.WriteLine("\n"+Convert.ToString(zahl) + " ERFUELLT DIE BEDINGUNG NICHT"); } for (int i = 0; teiler[i] != "\0"; i++) laenge = i; //Variable teiler leeren... for (int i = 0; teiler[i] != "\0"; i++) teiler[i] = ""; Console.Write("\nWeitere Zahl überprüfen? (j/n): "); } while (Console.ReadLine().ToLower() == "j"); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1