C# :: Aufgabe #351 :: Lösung #2
3 Lösungen

#351
Iteriertes Querprodukt
Anfänger - C#
von JKooP
- 24.01.2021 um 16:44 Uhr
Das Querprodukt einer Zahl ähnelt der Berechnung der Quersumme,
nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden.
3784 => 3 * 7 * 8 * 4 = 672
Nun soll aus dem Ergebnis wiederum das Querprodukt berechnet werden.
672 => 6 * 7 * 2 = 84
Und immer so weiter, bis nur noch eine Ziffer übrigbleibt.
84 => 8 * 4 = 32
32 => 3 * 2 = 6
Die Ziffer, die am Ende übrigbleibt, nennt man „multiplikative Ziffernwurzel“.
Die Anzahl der Schritte (Iterationen) wird als "Beharrlichkeit" bezeichnet.
Schreibe ein Programm, mit dem es möglich ist, sowohl die Beharrlichkeit als auch die multiplikative Ziffernwurzel einer beliebigen Integer- Zahl auszugeben.
Eine ausführliche Beschreibung findet man hier.
Viel Spaß
nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden.
3784 => 3 * 7 * 8 * 4 = 672
Nun soll aus dem Ergebnis wiederum das Querprodukt berechnet werden.
672 => 6 * 7 * 2 = 84
Und immer so weiter, bis nur noch eine Ziffer übrigbleibt.
84 => 8 * 4 = 32
32 => 3 * 2 = 6
Die Ziffer, die am Ende übrigbleibt, nennt man „multiplikative Ziffernwurzel“.
Die Anzahl der Schritte (Iterationen) wird als "Beharrlichkeit" bezeichnet.
Schreibe ein Programm, mit dem es möglich ist, sowohl die Beharrlichkeit als auch die multiplikative Ziffernwurzel einer beliebigen Integer- Zahl auszugeben.
Eine ausführliche Beschreibung findet man hier.
Viel Spaß
#2

von hollst (13980 Punkte)
- 15.02.2021 um 17:15 Uhr

using static System.Console; //.net 5.0.2 und VS Community 2019 long test = 3784; WriteLine(querprodukt(test)); WriteLine(beharrlichkeit(test).ToMyString()); ReadKey(); //--------------------------------------------------------------------------------- #region solution aufgabe_351 long querprodukt(long n) { var prod = (long)1; do { prod *= n % 10; n /= 10; } while (n != 0); return prod; } int[] beharrlichkeit(long n) { var result = new int[2]; result[0] = 0; while (n > 9) { n = querprodukt(n); result[0]++; //Beharrlichkeit } result[1] = (int)n; //multiplikative Ziffernwurzel return result; } #endregion static class Extension { public static string ToMyString<T>(this T[] X) { var sb = new System.Text.StringBuilder(); foreach (T x in X) sb.Append($"{x} "); sb.AppendLine(System.Environment.NewLine + "X.Length: " + X.Length.ToString("n0")); return sb.ToString(); } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1