C# :: Aufgabe #374 :: Lösung #3
3 Lösungen

#374
Primfaktorzerlegung und Potenzschreibweise
Fortgeschrittener - C#
von JKooP
- 03.04.2021 um 09:53 Uhr
1. Schreibe eine Methode/Funktion, die jede Integer- Zahl in ihre Primfaktoren zerlegen kann
und das Ergebnis als Array/Liste zurückgibt.
Beispiel:
24 = 2*2*2*3
Lösung:
a = { 2, 2, 2, 3 }
2. Schreibe eine weitere Methode/Funktion, die die Werte des Arrays aus Aufgabe 1
in Potenzschreibweise überführt und auf dem Bildschirm ausgibt.
Das Zeichen zur Darstellung kann je nach Vorliebe/Programmiersprache variieren (^, **, h, ...).
Lösung:
2*2*2 = 2^3
3 = 3^1
Ausgabe:
2^3 * 3^1
Viel Spaß
und das Ergebnis als Array/Liste zurückgibt.
Beispiel:
24 = 2*2*2*3
Lösung:
a = { 2, 2, 2, 3 }
2. Schreibe eine weitere Methode/Funktion, die die Werte des Arrays aus Aufgabe 1
in Potenzschreibweise überführt und auf dem Bildschirm ausgibt.
Das Zeichen zur Darstellung kann je nach Vorliebe/Programmiersprache variieren (^, **, h, ...).
Lösung:
2*2*2 = 2^3
3 = 3^1
Ausgabe:
2^3 * 3^1
Viel Spaß
#3

von JKooP (18090 Punkte)
- 17.04.2021 um 13:57 Uhr
NET 5.x; C# 9.x; VS-2019
C#-Code

using System; using System.Collections.Generic; using System.Linq; var n = 24; var r = n.GetPrimeFactors(); Console.WriteLine($"[{string.Join(", ", r)}]"); Console.WriteLine($"{n} = {r.GetPowerNotation()}"); public static class Extensions { public static IEnumerable<int> GetPrimeFactors(this int n) { var i = 2; while (i <= n) { if (n % i == 0) { n /= i; yield return i; } else i++; } } public static string GetPowerNotation(this IEnumerable<int> lst) => string.Join(" * ", lst.GroupBy(x => x).Select(x => new { b = x.Key, e = x.Count() }).Select(x => $"{x.b}^{x.e}")); }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1