Prüfen, ob eine Zahl eine periodische Zahl ist

sserio

Bekanntes Mitglied
Wie im Titel schon steht, möchte ich wissen, ob man irgendwie herausfinden kann, ob eine Zahl eine periodische Zahl ist und was die Periode ist.
Bsp.: 1,67676767 dann ist die Periode 67 nach der 1, . Ich habe mir gedacht, dass man vielleicht 50(+) Nachkommastellen überprüfen könnte und bestimmte Intervalle der Zahl mithilfe von Substrings vergleichen könnte. Habt ihr andere Ideen.
 

sserio

Bekanntes Mitglied
Eine Folge/ Muster kann ich auch nicht erkennen (vllt. gerade und ungerade Ziffern), weil 1/6 auch eine periodische Ziffer ergibt, genauso wie die Ungeraden.

1/2= 0.5
1/3= 0.(3)
1/4= 0.25
1/5= 0.2
1/6= 0.1(6)
1/7= 0.(142857)
1/8= 0.125
1/9= 0.(1)
1/10= 0.1
 

httpdigest

Top Contributor
Eine periodische Zahl ist ja gerade eine Zahl, die sich nicht dezimal darstellen lässt, wie z.B. 1/3.
Du willst also aus einer dezimalen Darstellung einer Zahl ermitteln, ob die Zahl eine Periode (in ihrer (undendlichen) dezimalen Darstellung) hätte?
Und wenn ich dir die dezimale Zahl: 0,3333333 gebe und dir sage, dass ich _wirklich_ die dezimale Zahl 0,3333333 meine und _nicht_ den Quotient 1/3 ?

In welcher Form ist die Zahl denn gegeben? Kann ja nur als Bruch sein.
 

sserio

Bekanntes Mitglied
Eine periodische Zahl ist ja gerade eine Zahl, die sich nicht dezimal darstellen lässt, wie z.B. 1/3.
Du willst also aus einer dezimalen Darstellung einer Zahl ermitteln, ob die Zahl eine Periode (in ihrer (undendlichen) dezimalen Darstellung) hätte?
Und wenn ich dir die dezimale Zahl: 0,3333333 gebe und dir sage, dass ich _wirklich_ die dezimale Zahl 0,3333333 meine und _nicht_ den Quotient 1/3 ?

In welcher Form ist die Zahl denn gegeben? Kann ja nur als Bruch sein.
Es macht ja keinen Unterschied, ob es jetzt _33333_ ist oder nur _3_ , weil die Stammzahl die sich immer wiederholt 3 ist. Oder?
 

httpdigest

Top Contributor
Also die Frage ist: Gegeben eine rationale Zahl, also eine Zahl der Form a/b: Was ist die Periode dieser Zahl in ihrer dezimalen Darstellung?
 

sserio

Bekanntes Mitglied
Ach egal. Sagen wir mal ich rechne jetzt so:
Java:
for(int i= 2;i<1000;i++){
    number = 1/i;
}
und ich möchte wissen ,ob dann number eine periodische zahl ist oder nicht und wenn es eine periodische zahl ist, dann die periode herrausfinden
ich komme aber nicht darauf, wie man das überhaupt erst herausfindet.
 

sserio

Bekanntes Mitglied
Also die Frage ist: Gegeben eine rationale Zahl, also eine Zahl der Form a/b: Was ist die Periode dieser Zahl in ihrer dezimalen Darstellung?
Ja, der Zähler muss dabei immer 1 bleiben und jetzt beispielsweise b muss eine rationale zahl sein. Ich muss erstmal herausfinden, ob die Zahl periodisch ist und dann die Periode
 

sserio

Bekanntes Mitglied
den ersten artikel gelesen und nix verstanden (die zeichen). Mathematisch bin ich glaube ich noch nicht so weit
und wie soll man den schmarrn überhaupt implementieren
 

Oneixee5

Top Contributor
Was mir spontan einfällt:
Java:
        try {
            final BigDecimal a = new BigDecimal("1.0");
            final BigDecimal b = new BigDecimal("3.0");
            a.divide(b);
        } catch (final ArithmeticException e) {
            if (e.getMessage().contains("Non-terminating decimal expansion")) {
                System.out.println("infinity precision");
            }
            System.out.println("no infinity precision");
        }
 

fhoffmann

Top Contributor
Das würde ich wie bei einer Schriftlichen Division lösen:

1. Bei 1/n hat du zunächst den Rest 1; den merkst du dir in einer Liste.
2. Dann multiplizierst du den alten Rest mit 10 und berechnest das Ergebnis modulo n.
3. Ist der neue Rest null, so bist du fertig und hast keine Periode.
4. Ist der neue Rest in der Liste enthalten, so hast du eine Periode und bist ebenfalls fertig.
5. Ansonsten füge den neuen Rest der Liste hinzu und fahre mit Punkt 2 fort.

Spätestens nach n Schleifenduchläufen bist du fertig.
 

fhoffmann

Top Contributor
Um meine Lösung noch einmal zu verdeutlichen, hier zwei Beispiele:
Code:
 1 : 7 = 0,142857
-0
 --
 10                      (Rest 1)
 -7
 ---
  30                     (Rest 3)
 -28
  ---
   20                    (Rest 2)
  -14
   ---
    60                   (Rest 6)
   -56
    ---
     40                  (Rest 4)
    -35
     ---
      50                 (Rest 5)
     -49
      --
       1                 (Rest 1, ist bereits vorgekommen)


 1 : 6 = 0,16
-0
 --
 10                      (Rest 1)
 -6
 ---
  40                     (Rest 4)
 -36
  --
   4                     (Rest 4, ist bereits vorgekommen)
 

httpdigest

Top Contributor
Ich weiß, fertiger Code ist doof, aber hier mal ein Beispiel (implementiert die Long Division wie von @fhoffmann vorgeschlagen) und gibt die non-repeating decimal digits und die repeating digits aus:
Java:
import java.util.*;
public class DecimalExpansion {
    public static class Result {
        public final String nonRepeatingFraction;
        public final String repeatingFraction;
        private Result(String nonRepeatingFraction, String repeatingFraction) {
            this.nonRepeatingFraction = nonRepeatingFraction;
            this.repeatingFraction = repeatingFraction;
        }
    }

    public static Result rationalNumberToDecimal(int a, int b) {
        StringBuilder decimalExpansion = new StringBuilder();
        Map<Integer, Integer> remainderToPosition = new HashMap<>();
        int remainder = a % b;
        while (!remainderToPosition.containsKey(remainder)) {
            if (remainder == 0)
                return new Result(decimalExpansion.toString(), "");
            remainderToPosition.put(remainder, decimalExpansion.length());
            remainder *= 10;
            decimalExpansion.append(remainder / b);
            remainder %= b;
        }
        int positionOfRepeatingPart = remainderToPosition.get(remainder);
        return new Result(decimalExpansion.substring(0, positionOfRepeatingPart),
                          decimalExpansion.substring(positionOfRepeatingPart));
    }

    // Test
    public static void main(String[] args) {
        int a = 1;
        int b = 24;

        Result res = rationalNumberToDecimal(a, b);
        System.out.println("Number: 0." + res.nonRepeatingFraction + res.repeatingFraction);
        if (res.repeatingFraction.length() > 0) {
            System.out.println("Non-repeating part: " + res.nonRepeatingFraction);
            System.out.println("Repeating part: " + res.repeatingFraction);
        } else {
            System.out.println("non-repeating");
        }
    }
}
 

sserio

Bekanntes Mitglied
Ich weiß, fertiger Code ist doof, aber hier mal ein Beispiel (implementiert die Long Division wie von @fhoffmann vorgeschlagen) und gibt die non-repeating decimal digits und die repeating digits aus:
Java:
import java.util.*;
public class DecimalExpansion {
    public static class Result {
        public final String nonRepeatingFraction;
        public final String repeatingFraction;
        private Result(String nonRepeatingFraction, String repeatingFraction) {
            this.nonRepeatingFraction = nonRepeatingFraction;
            this.repeatingFraction = repeatingFraction;
        }
    }

    public static Result rationalNumberToDecimal(int a, int b) {
        StringBuilder decimalExpansion = new StringBuilder();
        Map<Integer, Integer> remainderToPosition = new HashMap<>();
        int remainder = a % b;
        while (!remainderToPosition.containsKey(remainder)) {
            if (remainder == 0)
                return new Result(decimalExpansion.toString(), "");
            remainderToPosition.put(remainder, decimalExpansion.length());
            remainder *= 10;
            decimalExpansion.append(remainder / b);
            remainder %= b;
        }
        int positionOfRepeatingPart = remainderToPosition.get(remainder);
        return new Result(decimalExpansion.substring(0, positionOfRepeatingPart),
                          decimalExpansion.substring(positionOfRepeatingPart));
    }

    // Test
    public static void main(String[] args) {
        int a = 1;
        int b = 24;

        Result res = rationalNumberToDecimal(a, b);
        System.out.println("Number: 0." + res.nonRepeatingFraction + res.repeatingFraction);
        if (res.repeatingFraction.length() > 0) {
            System.out.println("Non-repeating part: " + res.nonRepeatingFraction);
            System.out.println("Repeating part: " + res.repeatingFraction);
        } else {
            System.out.println("non-repeating");
        }
    }
}
Hä, wieso fragst du bei rationalNumberToDecimal(); ob remainder == 0 . Macht das nicht eingentlich wenig Sinn
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
M Prüfen, ob Zeichen eine Zahl ist Java Basics - Anfänger-Themen 3
C Datentypen Prüfen of eine Zahl Quadratzahl ist Java Basics - Anfänger-Themen 2
N jnumberfield prüfen, ob eine Zahl eigegeben wurde Java Basics - Anfänger-Themen 12
T Prüfen, ob ein String eine Zahl ist Java Basics - Anfänger-Themen 10
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
M Punkt auf eine Farbe prüfen Java Basics - Anfänger-Themen 8
O Prüfen ob ein String den selben Namen hat wie eine Booleanreihe? Java Basics - Anfänger-Themen 17
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
S Alle 60min prüfen ob eine Datei da ist Java Basics - Anfänger-Themen 6
S Prüfen ob eine TextFeldeingabe String enthält Java Basics - Anfänger-Themen 5
K prüfen, ob eine bestimmte Schriftart installiert ist Java Basics - Anfänger-Themen 4
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
R Auf Nachkommastellen prüfen. Java Basics - Anfänger-Themen 2
P Argumente auf plausibilität prüfen... Java Basics - Anfänger-Themen 8
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
B String mit Emailadresse prüfen Java Basics - Anfänger-Themen 11
E 2D Arrays auf Ungleichheit prüfen! Java Basics - Anfänger-Themen 5
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
N Compiler-Fehler Iban prüfen Java Basics - Anfänger-Themen 7
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
M String prüfen Java Basics - Anfänger-Themen 7
E Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung Java Basics - Anfänger-Themen 8
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S String auf Pallindromeigenschaft prüfen Java Basics - Anfänger-Themen 15
AssELAss Datums-Objekt prüfen ob im gleichen Monat? Java Basics - Anfänger-Themen 5
Screen Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ? Java Basics - Anfänger-Themen 5
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
I Prüfen ob Webseite existiert Java Basics - Anfänger-Themen 3
Z Inputs prüfen Java Basics - Anfänger-Themen 6
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K zwei Rechtecke auf Berührung prüfen Java Basics - Anfänger-Themen 2
G String auf Format prüfen Java Basics - Anfänger-Themen 3
J Eingabewert übergeben und prüfen von showInputDialog Java Basics - Anfänger-Themen 4
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
K Eindimensionalen Array prüfen Java Basics - Anfänger-Themen 5
M Konstruktor auf null prüfen, Arrays Java Basics - Anfänger-Themen 9
J Arrays prüfen und über if Bedingung ausgeben Java Basics - Anfänger-Themen 15
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
L Erste Schritte Einträge in ArrayList prüfen Java Basics - Anfänger-Themen 4
S OOP long prüfen Java Basics - Anfänger-Themen 5
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
N Prüfen ob Objekt existiert Java Basics - Anfänger-Themen 6
I Mehrere ArrayLists mit einer for( : ) Schleife auf Inhalt prüfen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben