C++ :: Aufgabe #309
1 Lösung

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ß
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ß
Lösungen:
C++ 11
C-Code

#include <iostream> #include <vector> using namespace std; int get_length(int n, int d) { vector<int> v; while (true) { while (n < d) v.push_back(n *= 10); n = 10 * (n % d); if (n == 0) return 0; if (find(v.begin(), v.end(), n) != v.end()) return (size(v) - (find(v.begin(), v.end(), n) - v.begin())); v.push_back(n); } } int main() { for (size_t i = 1; i <= 100; i++) cout << "1/" << i << " => " << get_length(1, i) << endl;; }