Hi zusammen
Momentan schreibe ich ein Programm, in dem unter anderem Fakultäten berechnet werden müssen. Das Problem ist aber, dass die Zahlen "schon" bei 21Fakultät zu groß sind. Meine Frage ist also: gibt es einen Datentyp, der größer als long long ist und somit Zahlen, die vielleicht in den Bereich 1.0E50 oder so gehen berechnet werden können? Ich habe schon long long long ausprobiert, aber da kommt die Meldung:
'long long long' is too long for GCC
Was mich vermuten lässt, dass höhere Zahlen einfach nicht gespeichert werden können, aber wer weiß :).
Ich wäre über Lösungsvorschläge sehr dankbar.
Evtl könnte Dir unsigned long long noch etwas Luft verschaffen. Ansonsten sind Microprozessoren nicht als Numbercruncher geplant.
Gruß Tommy
Edit: Evtl. hilft Dir die BigNumber-Lib weiter
Danke
ich schaue es mir mal an
Bis zu welcher Fakultät möchtest Du denn kommen? Und mit welchem Arduino, der so viele Bytes an Speicher frei hat?
Da es Dir anscheinend nicht auf das Ergebnis ankommt - das wäre am PC leichter zu berechnen - dann fannge doch an mit einer BigInteger Klasse und den zugehörigen Operatoren. Beispiele dafür dürfte es auf SourceForge o.ä. schon geben.
mit welchem Arduino, der so viele Bytes an Speicher frei hat
1050 = ca. 2167, dafür braucht man also 21 byte.
Selbst wenn man für n! = (n-1)! * n
mehrere solcher Zahlen braucht, ist der RAM-Bedarf kein Problem.
Den passenden Datentyp kannst/darfst/musst du dir natürlich machen. Das ist doch der Sinn des Ganzen, oder?