Sehr, sehr große Integer in C
lima-city → Forum → Programmiersprachen → C/C++ und D
anschauen
array
aussichtslos url
berechnen
bit
double
glauben
http
nachtrag
operator
problem
schau
stellen
test
untersuchen
url
verarbeiten
versuchen
verwenden
zahl
-
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? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage