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

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.
#1
vote_ok
von syzon (410 Punkte) - 05.09.2014 um 11:04 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Vollkommene_Zahlen
{
    class Program
    {
        static void Main(string[] args)
        {
            //Deklarationen
            ArrayList Teiler = new ArrayList();
            int Eingelesene_Zahl;
            int Summe_Teiler = 0;

            //Einlesen einer Ganzzahl
            Console.WriteLine("Bitte eine Zahl eingeben, um diese auf Vollkommenheit zu überprüfen: ");
            while (!int.TryParse(Console.ReadLine(), out Eingelesene_Zahl))
            Console.WriteLine("Bitte eine Ganzzahl eingeben!");

            //Berechnung Teiler
            for(int i = 1; i<=Eingelesene_Zahl-1; i++)
            {
                if(Eingelesene_Zahl%i==0)
                    Teiler.Add(i);
            }

            //Aufsummierung Teiler
            for(int i = 0; i<Teiler.Count; i++)
            {
                Summe_Teiler += Convert.ToInt32(Teiler[i]);
            }

            //Prüfung ob die Summe der Teiler der eingelesenen Zahl entspricht + Ausgabe
            if (Summe_Teiler == Eingelesene_Zahl)
            {
            Console.WriteLine("Die eingebene Zahl " + Eingelesene_Zahl + " ist eine vollkommene Zahl, da ihre Teiler: ");
            for (int i = 0; i < Teiler.Count; i++)
            {
                if(i==Teiler.Count-1)
                {
                   Console.Write(Teiler[i]+ " ");
                }           
                if (i==Teiler.Count-2)
                {
                   Console.Write(Teiler[i]+ " und ");
                }
                if (i!=Teiler.Count-1 && i!=Teiler.Count-2)
                {
                   Console.Write(Teiler[i]+ ", ");
                }
            }
            Console.WriteLine("aufsummiert " + Eingelesene_Zahl + " ergeben.");
            }
            else
            {
                Console.WriteLine("Die eingebene Zahl ist nicht vollkommen.");
            }
            Console.ReadLine();
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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