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

5 Lösungen Lösungen öffentlich
#361

Fröhliche Zahlen (Happy Number)

Fortgeschrittener - C# von JKooP - 28.02.2021 um 10:24 Uhr
Von einer fröhlichen Zahl spricht man, wenn eine natürliche Ausgangszahl (Integer)
nach einer bestimmten Iterationsvorschrift am Ende den Zielwert 1 hat.

Die Iterationsvorschrift hier:
Die Summe der Quadrate aller Ziffern einer Zahl.
Wiederholen des Prozesses mit der neu entstandenen Zahl, bis am Ende
das Ergebnis entweder 1 (true) ist oder die Schleife unendlich weiterläuft (false).

Beispiel Glückliche Zahl:
Zahl 19
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1

Beispiel unendlich:
Zahl 2
2² = 4
4² = 16
1² + 6² = 37
3² + 7² = 58
5² + 8² = 89
8² + 9² = 145
...

Aufgabe 1 (mittel):
Erstelle eine Methode/Funktion, die als Ergebnis bei einer Glücklichen Zahl den Wert true
und ansonsten false zurückgibt. Dabei können mehrere Schleifen ineinander verschachtelt werden.

Aufgabe 2 (schwieriger):
Wie Aufgabe 1, aber mit nur einer Schleife.

Viel Spaß
#5
vote_ok
von JchrisP (60 Punkte) - 19.07.2021 um 15:35 Uhr
Quellcode ausblenden C#-Code



namespace FröhlicheZahl
{
    class Program
    {                
        public static bool istFroehlich(int z)
        {
            bool ist = false;
            HashSet<int> Summen = new HashSet<int>();
            while (Summen.Add(z))
            {               
                int s = 0;                
                while(z > 0)
                {
                    s += (int)Math.Pow(z % 10,2);
                    z /= 10;
                }
                z = s;
            }
            if (z == 1)ist = true;
            return ist;
        }
        static void Main(string[] args)
        {
            Console.WriteLine(istFroehlich(7)); //true
            Console.WriteLine(istFroehlich(11));//false           
            Console.ReadKey();
        }
    }
}


Kommentare:

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

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

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.