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

3 Lösungen Lösungen öffentlich
#336

Periodenlänge von Stammbrüchen

Fortgeschrittener - C# von JKooP - 01.11.2020 um 09:50 Uhr
Stammbruch nennt man einen Bruch mit einer 1 im Zähler und einer beliebigen natürlichen Zahl im Nenner.
Schreibe eine Methode/Funktion, mit der man die Periodenlänge eines solchen Bruchs berechnen kann.

Beispiele:

1/4 = 0,25 --> Periodenlänge ist 0, da der Bruch abbricht
1/6 = 0,166666… = 0,16 --> Periodenlänge ist 1, da sich nur die Ziffer 6 wiederholt
1/11 = 0,090909… = 0.09 --> Periodenlänge ist 2, da sich die Ziffern 0 und 9 wiederholen

Viel Spaß
#3
vote_ok
von JKooP (18090 Punkte) - 15.11.2020 um 13:38 Uhr
NET 5.x; C# 9.x
Neuerung in C# 9.x: Top-Level-Anweisung
https://docs.microsoft.com/de-de/dotnet/csharp/whats-new/csharp-9
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

Enumerable.Range(1, 100).ToList().ForEach(i => Console.WriteLine($"1/{i} -> {GetLength(1, i)}"));

static int GetLength(int a, int b)
{
    var l = new List<int>();
    while (true)
    {
        while(a < b) l.Add(a *= 10);
        a = 10 * (a % b);
        if (a == 0) return 0;
        if (l.Contains(a)) return l.Count - l.IndexOf(a);
        l.Add(a);
    }
}

Kommentare:

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

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