C# :: Aufgabe #60 :: Lösung #5
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.
#5

von niknik (1230 Punkte)
- 13.08.2015 um 13:28 Uhr

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /* * 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. */ namespace VollkommeneZahl { class Program { static void Main(string[] args) { string antwort = "Y"; while (antwort[0] == 'Y') { int number; do { Console.WriteLine("Geben Sie eine Zahl zwischen 0 und 100000 an: "); } while (!int.TryParse(Console.ReadLine(), out number) || number < 0 || number > 100000); List<int> teiler = new List<int>(); for (int i = 1; i <= (number / 2); i++) { if (number % i == 0) { teiler.Add(i); } } int result = 0; foreach (int item in teiler) { result += item; } if (result == number) { Console.WriteLine("{0} ist eine vollkommene Zahl.\nDie Teiler: ", number); foreach (int item in teiler) { Console.Write("{0}, ", item); } } else { Console.WriteLine("{0} ist keine vollkommene Zahl.", number); } Console.WriteLine("\nNoch eine Zahl? (Y/N)"); antwort = Console.ReadLine().ToUpper(); if (antwort.Length < 1) { antwort = "N"; } } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1