16 stelligen Integer



  • Hallo,

    ich möchte in C++ eine Berechnung durchführen, die mit einem 16 stelligen und einem 15 stelligen Integer Wert arbeitet.

    Leider ist es nicht ohnre Weiteres Möglich einen so großen Integer in C++ darzustellen.

    2528976880919149 und 973327984803263

    Gibt es eine Möglichkeit auf einfache Weise die Integer darzustellen.
    Sie sollen mit dem Modulo-Operator geteilt werden.

    Eine schnelle Antwort wäre wirklich super.
    Danke

    MfG
    Cruxi



  • Hatte unsigned long long nicht meistens 19 Stellen? Würde gerade reichen.

    Beide sind durch 257 teilbar. Zufall? Falls Du den ggt ausrechnen sollst, kannste den binary gcd nehmen und mit Doppelzahlen rechnen. Da der binary gcd nur /2 und - und Vergleiche braucht, wäre das handlich selber implementiert.

    Evtl gibt es noch viele leckere Tricks, zum Beispiel, wenn die Zahlen auch vor Dir errechnet werden. Dazu müßte das Problem selber genauer bekannt sein.


  • Mod



  • Herzlichen Dank!

    Du hast Recht volkard, ich soll den ggT ermitteln, jedoch über den Euklinischen Algorithmus.
    Den Code hatte ich bereits fertig geschrieben. Es fehlte halt nur die Sache mit dem long long.

    Es funktioniert einwandfrei. Nochmals viele Dank.



  • Cruxi schrieb:

    Eine schnelle Antwort wäre wirklich super.

    Keiner antwortet schneller, weil darum gebeten wird. Die Zeile kannste Dir sparen.

    Aber eine höfliche Anfrage wird viel schneller beantwortet als eine unhöfliche. Da haste 100 Punkte. 👍
    Mehr davon! Das verbessert auch allgemein das Klima im Forum.

    Außerdem solltest Du beschreiben, WAS und wie Du machen möchtest, und nicht nur WIE Du es machen möchstest. Hier hatten wir Glück, daß ich traf. Ok, Deine Beschreibung war schon relativ gut.

    Manchmal ist die supi hübsche Lösung außerhalb der Vorstellung des Fragestellers. Und doch so naheliegend! Wenn der Fragesteller dann uns nur sagt, gegen welche Wände er knallt, anstatt zu sagen, wohin er will, kommt es vor, daß wir mit sehr viel Aufwand gemeinsam die Wände ankratzen, aufkatzen, löchern, durchlöchern und letztendlich zerstören, statt einfach die Tür zu nehmen, die 20 cm entfernt gewesen wäre.



  • Im Zweifelsfall: uint64_t oder uint128_t



  • knivil schrieb:

    Im Zweifelsfall: uint64_t oder uint128_t

    werden die schon unterstützt?
    wenn ja, auch vom mscv2010?



  • Ein 64 Bit Integer reicht fuer 16 Stellen aus. Auch sollte es einen 128 Bit Integer in VS2010 geben, allein wegen SSE.

    Korrektur: SSE erlaubt anscheinend keine Addition von 128 Bit Integern, aber diese kann leicht implementiert werden. Man braucht halt 2 oder 3 Takte anstatt einem. Eine einfach (siche nicht optimale) Implementation kann hier gefunden werden: http://svn.gnucash.org/docs/HEAD/group__Math128.html


Anmelden zum Antworten