| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: langzahlarithmetik (267 mal gelesen)
|
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 14. Mai. 2025 12:01 <-- editieren / zitieren -->
Hallo ihr lieben bin gerade am Rumknobeln an periodischen Brüchen. So ergibt z.B. 1/1999 eine Periodenlänge von 999 Ziffern. Da hab ich jetzt herausgefunden, wie man das einfach durch die Ergebniszahlen selbst entwickeln kann. Für die, die knobeln wollen, hier mal die ersten paar Ziffern: 0005002501250625312656328164082041020510255127563781890945472736368... Es gibt dafür eine nette Systematik. Nun bin ich bei 1/8887. Das hat eine Periodenlänge von 8886 Ziffern. Hat jemand eine Idee, wie man die ganze Periode mit dem Rechner oder online ermitteln kann? Natürlich bleibt mir immer noch die schriftliche Division, wie man sie gelernt hat. Ich möchte nur nicht meine ganze Rente dafür opfern.  Viele Grüße Roger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightsta1k3r Quasselprofi V.I.P. h.c. retired ...

 Beiträge: 21036 Registriert: 25.02.2004 Hier könnte ihre Werbung stehen!
|
erstellt am: 14. Mai. 2025 12:37 <-- editieren / zitieren -->
was bringts, wenn du es herausfindest? da denke ich an den Witz Zitat: Was ist 3x3 ? Die Hausfrau sagt 9 Der Mathematiker: eine lösbare Aufgabe Der Maschinenbauer zückt den Taschenrechner, klopft 10 Minuten darauf herum und verkündet dann: 8,99 periodisch Der Physiker: Rund 10
------------------
 ------------------ Es reicht nicht, sich Blödsinn nur auszudenken, wenn man ihn nicht auch bis zur letzten Konsequenz durchzieht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 14. Mai. 2025 12:54 <-- editieren / zitieren -->
Zitat: was bringts, wenn du es herausfindest?
echt jetzt? Fragst du dich das auch, wenn du ein Glas Bier oder Wein trinkst? Ich für meinen Teil frage das nicht, sondern genieße mein Tun. Viele Grüße Roger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied Maschinenbau Ingenieur
    
 Beiträge: 1571 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 14. Mai. 2025 13:18 <-- editieren / zitieren -->
|
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 14. Mai. 2025 13:26 <-- editieren / zitieren -->
|
nightsta1k3r Quasselprofi V.I.P. h.c. retired ...

 Beiträge: 21036 Registriert: 25.02.2004 Hier könnte ihre Werbung stehen!
|
erstellt am: 14. Mai. 2025 14:24 <-- editieren / zitieren -->
Zitat: Original erstellt von rode.damode: Fragst du dich das auch, wenn du ein Glas Bier oder Wein trinkst?
Nein, denn da ist die die Antwort schon vorher klar Wirf doch deine Frage bei Gemini ein, da bekommst du eine schöne Erklärung. Für solche Themen ist KI wie geschaffen  ------------------
 ------------------ Es reicht nicht, sich Blödsinn nur auszudenken, wenn man ihn nicht auch bis zur letzten Konsequenz durchzieht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 14. Mai. 2025 15:29 <-- editieren / zitieren -->
Danke für den Hinweis mit der KI. Nur: Zitat KI: Fazit: Die Berechnung der exakten Dezimaldarstellung von 1/8887 auf 8887 Stellen ist ein rechenintensives Problem, das über einfache Mittel hinausgeht. Es würde spezielle Algorithmen und erhebliche Rechenressourcen erfordern. Zitat Ende. Wow, hätte ich ja überhaupt nicht gedacht.  Muss ich mir doch mal Gedanken machen, das selber zu programmieren. So schwer ist das ja nicht. Mit modulo könnten die einzelnen Stellen ja nacheinander berechnet werden. Angefangen mit 10000 mod 8887 = 1 Rest 1113 diesen Rest (1113 x 10 ) mod 8887 = 1 Rest 2243 diesen Rest (2243 x 10 ) mod 8887 = 2 Rest 4656... das ganze dann 8887 mal durchlaufen lassen. gleichzeitig die ganzzahligen Werte hintereinader schreiben. 0,000112... Hatte gehoft, dass das schon mal einer programmiert hat. Nun denn, muss eben alles alleine machen. Viele Grüße Roger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 14. Mai. 2025 16:08 <-- editieren / zitieren -->
für alle die es interessiert. Hier das soeben geschriebene Programm in Delphi: procedure TForm1.Button1Click(Sender: TObject); var a,b : integer; i, z,m: integer; begin a := strtoint(edit1.Text); // 10000 initialisiert b := strtoint(edit2.text); // 8887 initialisiert for i:=1 to 8898 do // etwas weiter als nötig laufen lassen begin z:= a div b ; m := a mod b; edit3.text := edit3.text+(inttostr (z)); a := m *10; end; end; War noch kürzer als ich dachte und nach rund 1 Sekunde fertig mit der Berechnung. Die KI muss noch einiges Lernen. Viele Grüße Roger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied Maschinenbau Ingenieur
    
 Beiträge: 1571 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 14. Mai. 2025 16:16 <-- editieren / zitieren -->
|
nightsta1k3r Quasselprofi V.I.P. h.c. retired ...

 Beiträge: 21036 Registriert: 25.02.2004 Hier könnte ihre Werbung stehen!
|
erstellt am: 14. Mai. 2025 16:36 <-- editieren / zitieren -->
|
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 14. Mai. 2025 16:51 <-- editieren / zitieren -->
Am Anfang stand ich wie der Ochs vor dem Berg. Daher auch meine verzweifelte Anfrage hier, wohlwissend, dass mir hier von euch einiges an den Kopf geworfen wird. Ich kann aber habwegs gut dagegenhalten. und es ist ja immer halb so schlimm gesagt, wie es gemeint war oder war das anders herum Ich war nun doch sehr erstaunt, wie einfach so eine Langzahlberechnung bei der Division ist. Das ist das was am Knobeln so Spass macht. Das Erfolgserlebnis. Da gibt es ein zusätzliches Gläschen Wein heute Abend. Viele Grüße Roger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lionel Hutz Moderator
 Beiträge: 2 Registriert: 26.03.2014 CATIA V5 R20
|
erstellt am: 14. Mai. 2025 22:21 <-- editieren / zitieren -->
Ich finde dein Ansinnen interessant, habe aber noch nicht alles nachvollzogen und ein paar Fragen. 1) du hast hier zwei Primzahlen als Beispiel herangezogen. Sind das besondere Primzahlen oder kommt bei jeder Primzahl (außer 2 und 5) ein periodischer Bruch raus? 2) Wie kommst du bei deinem Programm auf die führenden Nullen, wenn du mit 10000 als Zähler beginnst? Was sind deine Eingaben bei Delphi (edit1, edit2 und edit3)? 3) Wieso hast du in der for-Schleife das Ende hart codiert statt b+11 zu schreiben? Interessierst du dich etwa nicht für das Ergebnis von 1/8923? Ich bin gespannt von dir zu lernen. [Diese Nachricht wurde von Lionel Hutz am 14. Mai. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 14. Mai. 2025 23:25 <-- editieren / zitieren -->
Hallo Lionel zu 1. die Periodenlänge kann maximal so lang sein wie der Nenner-1, denn so viele unterschiedliche Reste können entstehen. Beim ersten Rest, der sich wiederholt, bricht die Periode ab, bzw. wiederholt sich. Die Periodenlänge ist nicht immer so lang wie Nenner-1. Es gilt nämlich, dass die Periodenlänge ein Teiler von Nenner-1 sein kann. So ist es z.B. bei 1/1999. 1999-1 = 1998. 1998 hat u.a. den Teiler 999, was hier die Periodenlänge ist. zu 2. edit3.text ist auch, wie edit1 und edit2, initialisiert und zwar mit 0,00 zu3. die Schleife lasse ich etwas länger laufen, als den Nenner, um die letzte Wiederholung der Periode zu sehen. Mit der Suchfunktion in Word lasse ich dann nach den ersten Ziffernfolgen suchen, um kürzere Perioden zu finden. was du mit b+11 meinst, verstehe ich nicht. Das Ergebnis von 1/8923 ist im Anhang. 8922 hat die Teiler 1, 2, 3, 6, 1487, 2974, 4461, 8922 Die Periode ist hier dann nur 1487 Ziffern lang. Daher nicht ganz so interessant wie 8887. Interessant ist höchstens, warum ausgerechnet eine Periodenlänge von 1487? Ansonnsten haben sich schon Fermat und Euler darüber ausgelassen. So ganz vestehe ich das von denen nicht. Hab nur Abi und nicht Mathe studiert.  Viele Grüße Roger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lionel Hutz Moderator
 Beiträge: 2 Registriert: 26.03.2014 CATIA V5 R20
|
erstellt am: 15. Mai. 2025 22:20 <-- editieren / zitieren -->
Das, was ich heute in Excel mit schriftlicher Division gelernt habe, versuche ich nun in dein Programm einfließen zu lassen. Um den Code mal allgemeingültig zu halten, habe ich ein paar Änderungen vorgenommen, wobei ich leider zugeben muss, dass ich fast alles über Delphi vergessen habe, was ich je wusste. Code: procedure TForm1.Button1Click(Sender: TObject); var a,b : integer; i, z,m, r: integer; begin a := 10; // füllt ab der ersten Nachkommastelle mit führenden Nullen b := strtoint(edit2.text); // 8887 initialisiert r := b+11 edit3.text := "0,"for i:=1 to r do // etwas weiter als nötig laufen lassen begin z:= a div b ; m := a mod b; edit3.text := edit3.text+(inttostr (z)); a := m *10; end; end;
Meine Sorgen des Tages sind: wo beginnt und wo endet die Periode? Z.B. ist 1/6 ein periodischer Bruch, die Periode beginnt aber erst an der zweiten Nachkommastelle. Sie endet eine Stelle bevor die Paarung {Divisor;Rest} zum zweiten Mal auftritt. Damit lässt sich auch erst der Anfang bestimmen, nämlich wo die Paarung zum ersten Mal auftrat. Ich schlafe nochmal eine Nacht drüber. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 16. Mai. 2025 13:29 <-- editieren / zitieren -->
Hier hab ich das Programm gleich mit der Suchfunktion nach der Periodenlänge erweitert und deine Anmerkung zu den Initialisierungen angepasst. Die Befürchtung, dass die Suche lange dauern wird, hat sich nicht bewahrheitet. Merkt man kaum. Ist heutzutage doch anders als mit meinem AppleII damals. 1 Mhz Takt und 64kbite Hauptspeicher. Hatte damals ein Programm geschrieben, um eine gewisse Getriebekombination geometrisch abgestuft ermitteln zu können. Nach einer Woche hatte ich das dann gestoppt. Hochgerechnet hätte es über ein Jahr benötigt. Vielleicht schaue ich doch mal in meine alten Unterlagen auf dem Speicher nach und programmiere das nochmal neu. hier mal das Pascal-Programm: procedure TForm1.Button1Click(Sender: TObject); var a,b : integer; i, z,m,position, position2, suchlaenge, suchpos: integer; substr : string; begin edit3.text := '0,'; a := strtoint(edit1.Text); b := strtoint(edit2.text); for i:=1 to b+21 do begin z:= a div b ; m := a mod b; edit3.text := edit3.text+(inttostr (z)); a := m *10; end; suchpos := 3; if b < 20 then suchlaenge := b else suchlaenge := 20; // stringlänge zum suchen der Periodenlänge subStr := Copy(edit3.text, suchpos, suchlaenge); //wegen 0,.. erst ab der 3. stelle merken Position := Pos(substr, edit3.text); // hier wird der Periodenanfang zum ersten mal gefunden = gleich am Anfang position2 := Pos(Substr, Copy(edit3.text, position+1, Length(edit3.text))); // erst ab position+1 weitersuchen if position2 = 0 then // dann liegt eine gemischt zusammengesetzte Periode vor begin repeat inc(suchpos); //hier um 1 später nachschauen subStr := Copy(edit3.text, suchpos, suchlaenge);
Position := Pos(substr, edit3.text); // hier wird der Periodenanfang zum ersten mal gefunden = gleich am Anfang position2 := Pos(Substr, Copy(edit3.text, position+1, Length(edit3.text))); // erst ab position+1 weitersuchen // string ab offset bis max länge korrektur until position2 >0; // wiederholen, bis position gefunden wurde end; edit4.text := inttostr(position-2); // 1. position nach dem komma ausgeben, -2 wegen dem kommazeichen und 0 edit5.text := inttostr(position2); // länge der Periode ausgeben edit6.text := substr; // suchstring ausgeben
end; Im Anhang habe ich eine Excel-Datei zum Berechnen mitgeliefert. Ist sehr einfach gehalten. Vielleicht kann der ein oder andere mit VB was einfacher machen. Einfach .txt entfernen. Viele Grüße Roger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied Maschinenbau Ingenieur
    
 Beiträge: 1571 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 16. Mai. 2025 19:26 <-- editieren / zitieren -->
Funktioniert das wirklich so, wie es soll? Normalerweise sind Variablen case-sensitiv, und Du hast 'position' und 'Position'. Kann aber auch sein. Hab schon ewig kein Pascal mehr angerührt. Grad gesehen: Muss wohl gehen, denn ist bei 'substr' dasselbe. [Diese Nachricht wurde von Torsten Niemeier am 16. Mai. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rode.damode Mitglied Maschinenbauingenieur

 Beiträge: 77 Registriert: 15.07.2011 Inventor 2025
|
erstellt am: 17. Mai. 2025 09:57 <-- editieren / zitieren -->
Hab zwar im zarten Alter von 50 noch C# gelernt und ein Assistenzsystem programmiert. Dort ist es tatsächlich so, dass Groß und Kleinschreibung einen Unterschied ausmacht. Aber es geht nichts über das in jungen Jahren gelernte Delphi. Da ist der Code im Kopf schon fertig, bevor man den niederschreibt. Dort ist es egal, ob der Code groß oder klein geschrieben ist. Nur Umlaute verträgt Delphi nicht. Daher auch suchlaenge anstatt suchlänge. Hatte mit der Hochsprache alle Anlagen bei uns programmiert. Zur Absicherung hoher Kräfte sowie sicherheitsrelevanter Komponenten wie Roboter und Pressen habe ich dann einfach noch eine Sicherheitssteuerung draufgesetz. So blieb ich all die Jahre in Übung. @ Torsten könntest du das Bild mit der Zahlenreihe etwas verkleinern? Das zieht jeden Beitrag so in die Breite. Viele Grüße Roger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied Maschinenbau Ingenieur
    
 Beiträge: 1571 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 17. Mai. 2025 11:16 <-- editieren / zitieren -->
Zitat: Original erstellt von rode.damode:
@ Torsten könntest du das Bild mit der Zahlenreihe etwas verkleinern? Das zieht jeden Beitrag so in die Breite. Viele Grüße Roger
Ich nehme den Text raus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |