0 Daumen
690 Aufrufe

konst=(a*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 

Avatar von 5,7 k

Zu wenig Angaben, was das überhaupt werden soll.

kurz zusammengefasst:

Sechs Zahlen sollen irgendwie möglichst klein werden ...

... die Nebenbedingungen sind völlig unbestimmt, aber zu klein wäre auch nicht gut, weil es dann nicht groß genug ist.

End-Ziel ist, dass die Summe aller Zeichen der Formel kleiner als die Ziffernanzahl der Zahl wird.

Eine Art Komprimier-Algorithmus für große Zahlen, ABER mit Basis 10.

Nun kann man per PC alle Kombinationen Testen, aber schon bei 50stelligen Zahlen habe ich eine Variable f, die 30 stellig werden kann, was analog zur Passwort-suche selbst mit den schnellsten Rechnern über 1000 Jahre dauern würde!

Zwischenziel dieser Frage hier ist nun, ob es Bereiche für die Variablen f und c gibt, in denen das Suchen besonders erfolgversprechend oder sinnlos sein wird -> um die Such-Zeit zu verkürzen. 

Denkbar wäre auch eine Art Zwischenrechnung mit reellen Zahlen (also mit Nachkommastellen), die durch nachträgliche Multiplikation geeigneter Faktoren wieder ganzzahlig werden...

Das ist das Teilgebiet der Teiler, Ganzzahlfunktionen, ggT, kgV, Modulo, Primzahlen ... 

wo ich mich nicht so gut auskenne.

Zu klein werden kann der Betrag der Variablen nie, da die Bedingung "Formel muss Endergebnis ergeben" ja erfüllt sein muss!

"Ziel ist, dass die Summe aller Zeichen der Formel kleiner als die Ziffernanzahl der Zahl wird."

Bitte versuche nicht zu erklären, was damit gemeint sein soll.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community