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
2115299

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.