konst=(ab *c + Offset)/f
Alle Variablen ganze Zahlen!
Natürlich kann man beliebige Werte für a...f vorgeben und nach Offset umstellen,
ABER dann wird Offset immer sehr groß!
Ziel ist ein Minimum an Zeichen in der Formel, also kleines Offset!
kleines Beispiel: gegeben sei:
konst=29100324665007027189416 {23 Ziffern/Zeichen}
relativ schnell finde ich
5546 ^ 6+1249157265114684520 {26 Zeichen}
oder kleine Werte für f und c:
(804 ^ 8+279303456529893360)/6 {28 Zeichen}
Weitere Optimierung für Offset bringt nur extrem selten was:
1249157265114684520=4162^5+306974106863688
279303456529893360=3085^5-128352166534765 {wird nur noch länger; habe schon zig Mio. Beispiele durchgerechnet...}
aber was ich suche ist
(23 ^ 19*13-6803)/33333 {21 Zeichen}
Wie kann man bei der Suche nach f und c optimiert vorgehen, ohne
alle Fälle
for f=1... 33333
for c=1...13
for a=...
durchzuprobieren, denn dass dauert bei großen Zahlen (ab 30 Ziffern) selbst mit schnellem PC sehr lange!
Ich denke da an Teilbarkeitsregeln oder Modulo Funktion um gewisse "Lücken" oder
"uninteressante Bereiche" zu überspringen.
Andere Ideen?
Etwas genauer: bei der Suche ergeben sich folgende Zwischenergebnisse:
(23^19*13-58200649330014054385635)/33331 von Länge 23 nach 40
(23^19*13-29100324665007027196219)/33332 von Länge 23 nach 40
(23^19*13-6803)/33333 von Länge 23 nach 21
(23^19*13+29100324665007027182613)/33334 von Länge 23 nach 40
(23^19*13+58200649330014054372029)/33335 von Länge 23 nach 40
Was man also braucht ist ein geeigneter Teiler f, so dass Offset beim Vorzeichenwechsel
(von blau nach rot)
möglichst nahe beieinander liegt,
damit es genau dazwischen (eine Art Mittelwert) minimal wird...
Wählt man Teiler f ungünstig, schwankt Offset so stark, dass keine Optimierung in Reichweite ist:
(6410^6*13+348897011455909871896)/31 von Länge 23 nach 36
(6444^6*13+367162911531027760384)/32 von Länge 23 nach 36
(43^14*13-198931528568651700109)/33 von Länge 23 nach 35 <-- Mitte nur 1 Zeichen Weniger als die anderen
(6510^6*13-119686593449288559856)/34 von Länge 23 nach 36
(6541^6*13+369611929316667617427)/35 von Länge 23 nach 36