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

3 Lösungen Lösungen öffentlich
#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ß
#3
vote_ok
von JKooP (18090 Punkte) - 17.04.2021 um 13:57 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden 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

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

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.