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