kostenloser Webspace werbefrei: lima-city


Sehr, sehr große Integer in C

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    bettcrew

    Kostenloser Webspace von bettcrew

    bettcrew hat kostenlosen Webspace.

    Guten Abend.

    Ich versuche gerade den Miller-Rabin-Test (http://de.wikipedia.org/wiki/Miller-Rabin-Test) mit C zu implementieren und stoße dabei auf das Problem, dass ich sehr große Integer auf Teilbarkeit untersuchen muss.

    Beispielweise muss ich 17^2012 modulo 2013 berechnen. Das Problem ist, dass 17^2012 sowas ist wie
    4605001893283581885609668289746885648252672361273682628051127231358146805851001860688860965735793895401541928377795434726378814391958231335917637457140920768138247012914803447537838742445570052287757008205412237530698601579867745571975212778628335642651963375050191531030234694204633183375914839639817960663258128435410961600602792369214732647698334009139988873893367098226213850748967580668891308582427453388665022598440794104882424434234738082900908864053539969934263730519669385386995823414943266108536201386338911709176617814892766402465517879104480733207815650003136827483286371628152532225120932025576962181160017128141980613408184311688454497691232385930866689323437535633867380880878877567781812227762369498228693147549160249288443167138676662634890053315724431516402751355231865477257432089491321270076509355106710752145095564653894104893125399709261443086465513087732520018760016141697236530223584967141075216575145068946321281132720044910554231018006055716922168287938779668808456001342405692249104481039601361117013583032349331701594910502863886159133939109941855142246700014423185715028037086452516257107577776163534201909022156266066562266367568179199993217598853722786953830817116209773320099068598414605769445416975901132753627320622031040310412617530416824670922747148251433394839388538581474368034251651808353473885185171009054656051780771055644468129304585417559052834636814338269764056374867757197599357980125381349800539977058168068659761310457111791508551349958693541279326798644030069394832518628711233932197482838101396754698794653796577106074385580300779556763371943900405060272315368462000471479614538279769768621662295173789615821821839546042586379088730437311916794796302615588928167776337396689768258718582053473736893988095395121970484165755184718296128455527381237656786809450871478472169195225983689424003906968275128043350738731235107289867166600760789883298338512341793048921804646621221434042970790333934836936355654375538233423868001641250098062686079026470561680794954883110436458826119256738655756371769666472623114955163538902291826776843601090522935624265695044294469207709174700819888814414844775546374317830638194107079059660147343615380061316819431842689368518491256543522694410193883853514351403776609389942108731113760268654949047773800526594235816172724749359226821130318659019441785934630355531902922424288803258433665034230845786892057923478121044509809191003258741724880648817814012674531565966387717039488886602427116230989761

    was offensichtlich nicht mal mehr mit long oder double gehandhabt werden kann, ganz abgesehen davon, dass ich double-Variablen ja nicht mit den %-Operator verknüpfen kann.

    Gibt es überhaupt einen Möglichkeit, so große Zahlen in C zu handhaben oder ist das aussichtslos?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. http://de.wikipedia.org/wiki/Integer_%28Datentyp%29

    da steht die datentypbegrenzung drin.

    wenn du solch große zahlöen häufiger brauchst, musst dudir selbst einen datentyp zusammenschnüren und packst je 128 stellen in einen unsigned longint rein, die du zu einem array bündelst. allerdings weiß ich nicht, wenn du die immer über einen verkettungsoperator aufrufst, ob er da bei 128 bit rundet... wennn ja hast du die A-Karte und musst auch noch eigene Berechnungsalgorithmen schreiben, um deine zahlen byteweise zu verarbeiten...
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du kannst beliebig große Zahlen mit C handhaben, musst dazu aber eine entsprechende Bibliothek verwenden.

    Schau dir dazu GMP an.
  5. Autor dieses Themas

    bettcrew

    Kostenloser Webspace von bettcrew

    bettcrew hat kostenlosen Webspace.

    Danke @hackyourlife. Ich glaube, sowas habe ich gesucht. Werde ich mir mal anschauen.

    Nachtrag: Hab's jetzt ausprobiert. Ist genau das, was ich gesucht habe. Vielen Dank nochmal.

    Thema kann geschlossen werden.

    Beitrag zuletzt geändert: 6.8.2012 18:15:34 von bettcrew
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!