C# :: Aufgabe #60 :: Lösung #5

9 Lösungen Lösungen öffentlich
#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.
#5
vote_ok
von niknik (1230 Punkte) - 13.08.2015 um 13:28 Uhr
Quellcode ausblenden C#-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben