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

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.
#6
vote_ok
von n.rohde (400 Punkte) - 17.08.2015 um 17:05 Uhr
Quellcode ausblenden C#-Code
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

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