Zahl in Potenz Umwandeln?
Hi Leute, Ich habe mir gerade gedanken darüber gemacht, ob man nicht irgendwie möglich sein muss mit einem Programm eine Große Zahl in Potenzen umwandeln um diese(Die Zahl) zu "Komprimieren". Z(ahl)=X+Y^N Meine Frage ist nun, ob jemand von euch einen C# Code kennt oder mir einfach Mathematisch beschreiben kann wie das mit Stift und Papier (und Taschenrechner ^^) einfach funktioniert eine KLEINE Potenz zu erhalten (ohne ausprobieren). Also nicht "3000=2999+1^1" sondern "3000=-125+5^5" oder "84+54^2" {Ich hoffe das geht bei größeren Zahen besser} [Ansonsten: Ich suche nur nach einem Weg große(Zufällige) Zahlen mit (viel) weniger Zeichen dar zu stellen].
4 Antworten
Große Zahlen viel weniger Zeichen hört sich stark nach einem anderen Zahlensystem an. Benutz doch einfach dann das Hexadezimalsystem oder geh noch höher.
Alternativ benutz die Wissenschaftliche Schreibweise also mit Zehnerpotenzen.
1000 = 1 × 10^3
Für so Zeug gebrauche ich immer noch Basic ^^
Ist halt aus meiner Jugend (ATARI, C64)
Du bist noch in Phase 1 bei der primitiven Form x+y^n. -> Extrem wenig Aussicht auf Erfolg.
Unter
https://www.gutefrage.net/frage/wer-findet-fuer-116304723084368933178812767815-die-kuerzeste-formel
war ich schon in Phase 4, wo über 20 verschiedene Funktionen getestet wurden und für diese spezielle Zahl nichts kürzeres herauskam. Nur wenn man eine höhere Basis (z.B. 36) nimmt, wird die Schreibweise für diese Zahl kürzer als die Zahl selbst.
Bei einigen Sonderfällen (besonders mit Wiederholung) ist es leicht:
77777777777777777777777777777777 = (10^32*7-7)/9
Programmiertechnisch einfach 2 For-Schleifen...
Nenne mir doch mal einfach eine Zahl mit über 30 Stellen...
Da Du keine Zahl anbietest, zeige ich Dir das mit Deinem viel zu kleinen Beispiel:
987654321
=(8e10+1)/81 =(10^10*8+1)/81
=31427²-2008
= 63^5-4782222 = 63^5-3^14+747
=996³-393615
=996³-627²-486
=3³*17²*379721=3³*17²*Prime(180²-123)
=gc0uy9_36 (Basis 36)
alle kompatibel für wolframalpha.com
Mit dieser viel zu kleinen Zahl und den 5 primitiven Operatoren sind alle Funktionen länger als die Ausgangszahl -> also keine Komprimierung!
Naja, bei höheren Zahlen ist es üblich sie in Zehnerpotenzen anzugeben, die man mit Brüchen oder kleinen ganzen Zahlen multipliziert; z.B 300000=3•10^5 ( Anzahl der Nullen ist Exponent)
Das Gleiche gilt für sehr kleine Zahlen, dann eben mit negativen Potenzen; zB 0,0003 = 3•10^-4 (Exponent ist die wie vielte Stelle hinterm Komma die Zahl ein nimmt, die den ersten Faktor beschreibt. Man kann Zahlen auch mit der Primfaktorzerlegung als Produkt ihrer Primfaktoren zusammensetzen. Falls du nicht weißt, was die Primfaktorzerlegung ist, das funktioniert folgendermaßen: Man kann Zahlen außer 1 in Primzahlen, bzw. Produkte von Primzahlen schreiben. Bsp. 4096=2^12 Man kommt auf die Primfaktorzerlegung, indem man bei einer Zahl Teiler, die Primzahlen sind, sucht, wenn man jetzt z.B die Zahl 54 hat, kann man sie als Produkt von 2•3•3•3 schreiben und dann als 2•3^3. Man hat bei der Pfz nicht nur Potenzen,
sondern vorwiegend Faktoren, die man teilweise zu Potenzen zusammenfassen kann, aber ich hoffe es hilft dir vll trotzdem. Die erste Methode ist jedoch gebrechlicher, vitalem wenn man in Chemie und Physik manchmal sehr hohe Zahlen hat, zB das Mol.
Kannst auch versuchen Teiler zu finden, funktioniert nur nicht wenn es ne Primzahl ist. Kannst auch 9,87654321•10^8 rechnen, hast dann aber nicht weniger Zeichen. 3 ist aber zum Beispiel ein Teiler der Zahl 987654321, das wären schonmal 3•329218107 die wiederum durch 3 Teilbar ist, also 3^2•109739369 die ist durch 17 Teilbar also 3^2•17•6455257. Die ist durch 17 Teilbar also 3^2•17^2•379721 . In diesem Fall ist 379721 ne Primzahl und des geht nicht weiter.
Wie soht das aus mit krummen Zahlen? z.B. 987654321, wie stelle ich die mit möglichst wenig zeichen dar?