数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: ysr

[原创]大整数的乘法

[复制链接]
 楼主| 发表于 2021-3-29 18:20 | 显示全部楼层
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801*
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801=
2678145490787694710138406683675886762424440548647327525594133873038347266950777818028529804877891353347244255046176220880989519574806598935727647635506939520211209794328712328126947740602255036264392628020291100698432900022333877728824270241063030019536831205264726059774673235680796770108334187808344470141093691232926021244583649747591446066921535333854157441330339217364515328375889937313870826987520723914810358707312468857074455945610038118763873992681688857200178452843740327143990247797893489008808544535536081089994800692174759199578596435124153437689121057209523619989593900355037400039597165241729693472001589594642879166693443994939359639600558001937547209387175085119128575833396037478944824322315197771750730768383267287661855880237549141571520374996029107650341071074081501632143441365461865431362023790463469688071768208320226561675630348708531708110373889241713511809029065048200924851629507265095151843687852114948736130517024578482059771284515915597919026074110811882700307150650858080695566672584075215926450360584738705106755945308199980660478183563586945902705730231409948938478910176292179410952310592864745025373902249844607078729230098512959498522851990040833671698873183076996740726479481352429756295966452788332789259316653805673821716832204368483794501474641036177256005810416507649770210480747056764697918800240201155395628561684853684747063434500664449114760179367086926249813006056735202795763742271472136500817313178050955623517148960973128433455798444839070215800699075256371341531892841721456473301085595261371522078416420399702683504171019191363372883472415693921509069484448792009627325245658854979159002549542769741504596589556474585723101403486046952706847309188488390899096649210853675228464611999630360164703837131620319658277117300208326944026347808645954842782309633205645471959842390075986572806483755223497552549948718545978420793425036666212191832327909389117021539426917904222971515424022606157676379417252939026404363841301595348953340657745965591468370831371449860774296757556463049237248472613472436666799615694672489600751763956185893123579218797539971253828850163437053164723845196089466298000486042246621634263064752906475198879616484926366053597071510886820878425907736453843197228282179943365206039514850477377542684361730162273246709577442085159313947668552462343596819299335060863266863059421286080919061657175757802930378698062290163092494909661982639303946271889619023417245433500782685534406291391527022657608608130680134939380126048353657648559735671562230714451258764762350451448379438849319710473631625533527602085050858633346936315115309333355986556546113134787213610042970405680162084678021281774169131725296977361816657904233850711837826724976507876061043779177845550646612327663283839673950405472039432309339110648301347672597370034346896334064135099613033528785924976781865447506814375627647103020761819104412269362847848884053177378762432543285984193091289854949394023586451139393716370633759317698908834326333339634557238526607966375935960004339535161203546369910853171524516945554862019134684985868547068709986010719120259421723270478586992153989283736650948010894951434857207445141886625290777550599700738909777829412358941157674866550887608199469723859806486384262574182811908513849905040209776132986875560077482527819093584150609347560543627976011009349905362597935257895287412087233810106693141683912683308201407373637490835862452911394718399632093441745957478079754723679119343225931665785380948807114301164623717144211285944154289093317610519159281033583963015810556464180819928345256832572962092994993950655913067768151113345566231088759030148164710287289335782462899525700500822021472132532771242198844498579102733028256523810973405350508253183399668290339844052874956694050028526577775764032598023622192221226501334606994447870277619118208162133562541678250491647671042612088902952091163094215645902682086024337098910110924115381788866213335441814530141911754446270296630426675020592640816713810936850961517475097707179713115856513919631998747192606018612535436009162735908155778165736923393260822217415131632296810207091918499370220533980666393617256227781299273913099896641458499949922475383775878771011361417556799406151773618626138749998464514570482965286184387350245762317271666329142667987131139265167425606863654107927682419958167046956962340419295394058625063862272314570914511355913547470055072878835349142049813368019960713974852351833144227544851625677753419141348585495260230041111323576432417502998832485027071744397105338790364666312325483218209150368759120749671419554589928540715813531144241705501211397506662448276056294585639532800634727428900861538486753011006379264618338782036690340859441153926551954112364946638768223012718907190897165613382555036872673785444132692292217184974818914501886689736449912131900762592363447945036085692999163815947845753538999001633767986447907729462453017601有4888位,用时0.6796875秒。
这比利用快速傅里叶变换的程序还快呢!咋回事?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-29 18:56 | 显示全部楼层
7172463269826462171528525227724894034214868966993605795401948124722087997342143358371455108964150545128907248526343196455641573509751354673861557821110693231777877738015812129161714061189179959717148156972438006245711375491637996368054355662274712424986912135083307535204835752100527089372858343068979871404409740751212288162364580340051030336669437742592243358179513860552191185265379861524597999525415656854787911581643398207658315370562159727183489341082919000873799051151043947664730614606995331479395199806790880383623001985260201859351553733798110323146855143033755798433086479488024524618236189650830082641102858321608765095677671296332855383698658513841618432462514767301509015302731887426449020324508457305854743150812148135681998160759231340593224787524059384993567619253642859738374890522751502722301228640973352385535814528059287908278674678352643221455078097708537386230468632692143543786079089278143231331448551012324709811279702452779256184630920739523413422282624035439915227985252545794326379126775078358185074208637164548385049952343933304537250581118807518766053939393481540287533027802322405590412993878611099596612132868370166415773181601154351447449360821364030895301897439991811626252222800042408837799445748876986689983744267954539975623901497977921404672456088365607147517753334119523085306549029501450784349931681757118493080278423158884618389416751863515799501941931299333482860034175574234687366084034854559860406380515922622731215797937947749347523567616361602120568917837553302958455697473044355271553097193939898199130578212161450820530733402948944817740996785663578468527435799222211621687841330657355269886610809724657106599734412672509267528377383850891990213998928910925665771135271178329415173122279497587450094043452968217137897325537655382191951751305922520305745720481516125474084463651538358435467578314496534799610440729366870223201955669253868969728058316618723047893958806793103141691041934281198205584987981081000108093858653439624897454612814469707610638127291418381351191694294777021231948012520106211264528527924444201382244571278473214765325480705119868390993533790074524744095675902347116176374826615934187667836147701248099347800023505688743794273915955274979733822944679464000508774509390349906781765163794451106428726498478530824886867498104246201491752880954757001517163612506498931595524274363029567180050754500432532286684708062072343197640125970583268910454330495069475260464330960780880190756901690402890214548943068478380757588861100818684623184339329031152871493812892138965016318354449639572431218054475101906966356246728290357749255900892206636706659073323666601520176669794618490222246109251969096246673833325909200541908647265810778433581200066738963648865628467965987974276129559867820082461324727175812909248560556153989070551651206916397043015129112324174041078381598687340367330369743574483768123513914466078688385552657957466373141833312470005872038158158558758597782287039757518156507558332909095180665881503900399254393925538499082517233770693477475440628379280827399682320040292147212671478850267113144256467717832789836095684233795606474628605577407950893979220730884373604393712239399619598622515105407684769318956407495911888144725372198319167914080204643210431914238821762306355036590446232568753016880799686685880210761285646606345578580056778051890680006982633074396045998096007046814297317508472091232768681594848779768724106961419347315786049071217250606391912412090036387359478549697004116901877456389276560046168633296499987754935871886741805805544288336626689145248219392479520665544572592654825874224723479880277722687977622479652630381460400253566835128569128126839849213424501027798623052330552639340014466433204854284282451838267652596510117073421554349769115596747847222786403991672125861002797993917039353677197561761018603077826216853034619545722932609155001960887797757724784083641663152934067672560173435725465409431333528091135523120222385280011570777644633992350683777567415457830142061356335821132623807179012101446605207533723888496145283691342928263101524024846536249138277962355381236115191250993587394690915625304012223449766194430885987517644469628964169109557807580762078537823980480277465642584796467360214177043602577120889280685824649388496001273597116159134970313980353087497406685979214581267102484657541875734018573130363674965905476673163481843821632051283681039720334533765017564509447055586120874529359775805844927319441709905022001704116387838005555153895216897265575940773948153176057832585460429745756094209528141488349976396674145584278724158836079117395297220622272613076439797697250956341920663130800734933155473346047738298666918898902058007968877485494163402560976541434704853172824135465265265413974659965992895056898571176505487405592027170864616186946549268484945297743480501600120064292645208037740939399240094229556634953081272586550404921251625234389912469589310281012901392380576054483238327215960879621215969418846522922054542058918325244657436478923637305716604682937562502625439542890870560297001951641986789624288562889846686525163088338471193186909768839469313807434287938259075089209910815237602035006864287774116054689067777229371270478665958455578247242113942197143505270008270270882191459688500066171521085054637377654252805754437567172842547938504092900808035624181824913689212947749777436293373997711125153064037803130649030656558546371288595296468051919653790009777109517042131035126573157883183656149031966290078048334686709613718875861993309644523724063515318637150743743389819818443552464423324971361456328433637001544653164638134029593641252649445564245102383007994865579077339457095651502941609117808906309223556024161286929108818191092639537820354261080758077666630753705679538620750240666605592530730238594235539574877759961712126221403282110319210039096970244934331283753007521745745837118120875705449296773432071049524935985944109558437494014526628545805285283211428212254815968453350353270667791149002454020746551663288384513504477866563520997609007704638752734240019484187769074642477074635474178236636866384721352427137750376744613001123164665522329698946864898915127542184529485587658494587744364754108361832698602920926798129076766271689152063216892000068702714408279505019745577786412160670706124505985662713657321905320058533322793579237307804061839083228241436729193118794125128602094745055040576711788450457579614174565175802897167080710639994745840408397188506013885908234200079470657560761093726188202968121735561672223506544407698071001104638286697863716911974871887889137352956177408235640187026335370180204269652496414622509246371913138867876466852915702002493457796630152391077246573798902025599992921947798890245930826255604543179370599273579602413517025291509137312565324651045766230943157633671851484144506416775604281483649665758671646087878710299223648600430794245286634276337844861170064580136723171347269810295795858398334220900459465680922702870972535103576876292907307652387534960191148834056753451657660931145515183543034393594453522937133734797355509943645187648731036090794950906104283431878826206307827524070028872299576965917050394234259986403377998509485079981363227077920026415618622428351304948072774838856801910366262559417442075232876162498709886882802124652312784435273507112770600208831184523646975165214379848407565171174246809997646009632924601230290592771311174549485322280542389123380462520652882111312033936289163788141960823931696888562106170237706550474284332740770252213900167894107284777482550350071361367151033525557171242907760562806679088740080478417471947819864720913692727336875658905474567774039096016299963871473601740086381354357179117749979110998112356352808189165842640207385776942252523358810039236078255183525529059874835125061234394074934909132255049783257541224053548198808652934695191418942834052371211524505976359110862030354610440635466142233137032127828857341531945816347930334509783514826135049690966965590328180073893837602188523301252123322723686120745275718705335983789003879497358018233759586456552862045742698107466630548973174919196570904489890564814069316083928253565097210010972987364689613782060247756229844584102377898827698947656763349306029039082478169225459931807461582437866510644539950728909670405185406776395849139556079466224657039622466467248175545823623111884112843786943196766907877471459634386322517853379671635861176446902694845586618133960389483456792263969375099395117758301586552554735290557282182649471723233085316948575654535258764959248191371622912245057971788968465050758911262576841267180636859779757898070212042118711333384216610181492870803869468282666126519808348146096589922650048641772202198072403546045272458781263186976049222383319870833843327375945414614154247992477644715054102005628243992111786180131664024016803330080223139821644587273437441338849555910477687563186510842007994149483363916523106835536022015378348641756245301023218771922044525978889328011515196392351153367647898428790542145817468347061491199973362848006838675577998841359685950026995771734056969750046174178343024201957430428174909217623707800454587541547999372447814554325540261532995290859332208048663519065389569542084421397802194571699591730237799757313714472333153018836276577894871710374936427805210334149251476143194011904103580927705512657445792637448210801981406325898853914731016758315659836542449366051395779886791126380622850691083405899521557705689988227787187036384654263022977011149854400284754958678411636633870582670219621470547411288183081931679714837078992548282323330288773323468937974805019102283375562950349861921150037994035660525472554512367270458369512316693424357275110365137080817513123195148755802178179447803099975134439746839174283338011413458411062894320960126845861170742217107400439529873590483426646151584669746270815795201有9775位,用时2.703125秒(这个是利用快速傅里叶变换的乘法程序的结果,是两个4888位的整数的积)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-29 19:01 | 显示全部楼层
7172463269826462171528525227724894034214868966993605795401948124722087997342143358371455108964150545128907248526343196455641573509751354673861557821110693231777877738015812129161714061189179959717148156972438006245711375491637996368054355662274712424986912135083307535204835752100527089372858343068979871404409740751212288162364580340051030336669437742592243358179513860552191185265379861524597999525415656854787911581643398207658315370562159727183489341082919000873799051151043947664730614606995331479395199806790880383623001985260201859351553733798110323146855143033755798433086479488024524618236189650830082641102858321608765095677671296332855383698658513841618432462514767301509015302731887426449020324508457305854743150812148135681998160759231340593224787524059384993567619253642859738374890522751502722301228640973352385535814528059287908278674678352643221455078097708537386230468632692143543786079089278143231331448551012324709811279702452779256184630920739523413422282624035439915227985252545794326379126775078358185074208637164548385049952343933304537250581118807518766053939393481540287533027802322405590412993878611099596612132868370166415773181601154351447449360821364030895301897439991811626252222800042408837799445748876986689983744267954539975623901497977921404672456088365607147517753334119523085306549029501450784349931681757118493080278423158884618389416751863515799501941931299333482860034175574234687366084034854559860406380515922622731215797937947749347523567616361602120568917837553302958455697473044355271553097193939898199130578212161450820530733402948944817740996785663578468527435799222211621687841330657355269886610809724657106599734412672509267528377383850891990213998928910925665771135271178329415173122279497587450094043452968217137897325537655382191951751305922520305745720481516125474084463651538358435467578314496534799610440729366870223201955669253868969728058316618723047893958806793103141691041934281198205584987981081000108093858653439624897454612814469707610638127291418381351191694294777021231948012520106211264528527924444201382244571278473214765325480705119868390993533790074524744095675902347116176374826615934187667836147701248099347800023505688743794273915955274979733822944679464000508774509390349906781765163794451106428726498478530824886867498104246201491752880954757001517163612506498931595524274363029567180050754500432532286684708062072343197640125970583268910454330495069475260464330960780880190756901690402890214548943068478380757588861100818684623184339329031152871493812892138965016318354449639572431218054475101906966356246728290357749255900892206636706659073323666601520176669794618490222246109251969096246673833325909200541908647265810778433581200066738963648865628467965987974276129559867820082461324727175812909248560556153989070551651206916397043015129112324174041078381598687340367330369743574483768123513914466078688385552657957466373141833312470005872038158158558758597782287039757518156507558332909095180665881503900399254393925538499082517233770693477475440628379280827399682320040292147212671478850267113144256467717832789836095684233795606474628605577407950893979220730884373604393712239399619598622515105407684769318956407495911888144725372198319167914080204643210431914238821762306355036590446232568753016880799686685880210761285646606345578580056778051890680006982633074396045998096007046814297317508472091232768681594848779768724106961419347315786049071217250606391912412090036387359478549697004116901877456389276560046168633296499987754935871886741805805544288336626689145248219392479520665544572592654825874224723479880277722687977622479652630381460400253566835128569128126839849213424501027798623052330552639340014466433204854284282451838267652596510117073421554349769115596747847222786403991672125861002797993917039353677197561761018603077826216853034619545722932609155001960887797757724784083641663152934067672560173435725465409431333528091135523120222385280011570777644633992350683777567415457830142061356335821132623807179012101446605207533723888496145283691342928263101524024846536249138277962355381236115191250993587394690915625304012223449766194430885987517644469628964169109557807580762078537823980480277465642584796467360214177043602577120889280685824649388496001273597116159134970313980353087497406685979214581267102484657541875734018573130363674965905476673163481843821632051283681039720334533765017564509447055586120874529359775805844927319441709905022001704116387838005555153895216897265575940773948153176057832585460429745756094209528141488349976396674145584278724158836079117395297220622272613076439797697250956341920663130800734933155473346047738298666918898902058007968877485494163402560976541434704853172824135465265265413974659965992895056898571176505487405592027170864616186946549268484945297743480501600120064292645208037740939399240094229556634953081272586550404921251625234389912469589310281012901392380576054483238327215960879621215969418846522922054542058918325244657436478923637305716604682937562502625439542890870560297001951641986789624288562889846686525163088338471193186909768839469313807434287938259075089209910815237602035006864287774116054689067777229371270478665958455578247242113942197143505270008270270882191459688500066171521085054637377654252805754437567172842547938504092900808035624181824913689212947749777436293373997711125153064037803130649030656558546371288595296468051919653790009777109517042131035126573157883183656149031966290078048334686709613718875861993309644523724063515318637150743743389819818443552464423324971361456328433637001544653164638134029593641252649445564245102383007994865579077339457095651502941609117808906309223556024161286929108818191092639537820354261080758077666630753705679538620750240666605592530730238594235539574877759961712126221403282110319210039096970244934331283753007521745745837118120875705449296773432071049524935985944109558437494014526628545805285283211428212254815968453350353270667791149002454020746551663288384513504477866563520997609007704638752734240019484187769074642477074635474178236636866384721352427137750376744613001123164665522329698946864898915127542184529485587658494587744364754108361832698602920926798129076766271689152063216892000068702714408279505019745577786412160670706124505985662713657321905320058533322793579237307804061839083228241436729193118794125128602094745055040576711788450457579614174565175802897167080710639994745840408397188506013885908234200079470657560761093726188202968121735561672223506544407698071001104638286697863716911974871887889137352956177408235640187026335370180204269652496414622509246371913138867876466852915702002493457796630152391077246573798902025599992921947798890245930826255604543179370599273579602413517025291509137312565324651045766230943157633671851484144506416775604281483649665758671646087878710299223648600430794245286634276337844861170064580136723171347269810295795858398334220900459465680922702870972535103576876292907307652387534960191148834056753451657660931145515183543034393594453522937133734797355509943645187648731036090794950906104283431878826206307827524070028872299576965917050394234259986403377998509485079981363227077920026415618622428351304948072774838856801910366262559417442075232876162498709886882802124652312784435273507112770600208831184523646975165214379848407565171174246809997646009632924601230290592771311174549485322280542389123380462520652882111312033936289163788141960823931696888562106170237706550474284332740770252213900167894107284777482550350071361367151033525557171242907760562806679088740080478417471947819864720913692727336875658905474567774039096016299963871473601740086381354357179117749979110998112356352808189165842640207385776942252523358810039236078255183525529059874835125061234394074934909132255049783257541224053548198808652934695191418942834052371211524505976359110862030354610440635466142233137032127828857341531945816347930334509783514826135049690966965590328180073893837602188523301252123322723686120745275718705335983789003879497358018233759586456552862045742698107466630548973174919196570904489890564814069316083928253565097210010972987364689613782060247756229844584102377898827698947656763349306029039082478169225459931807461582437866510644539950728909670405185406776395849139556079466224657039622466467248175545823623111884112843786943196766907877471459634386322517853379671635861176446902694845586618133960389483456792263969375099395117758301586552554735290557282182649471723233085316948575654535258764959248191371622912245057971788968465050758911262576841267180636859779757898070212042118711333384216610181492870803869468282666126519808348146096589922650048641772202198072403546045272458781263186976049222383319870833843327375945414614154247992477644715054102005628243992111786180131664024016803330080223139821644587273437441338849555910477687563186510842007994149483363916523106835536022015378348641756245301023218771922044525978889328011515196392351153367647898428790542145817468347061491199973362848006838675577998841359685950026995771734056969750046174178343024201957430428174909217623707800454587541547999372447814554325540261532995290859332208048663519065389569542084421397802194571699591730237799757313714472333153018836276577894871710374936427805210334149251476143194011904103580927705512657445792637448210801981406325898853914731016758315659836542449366051395779886791126380622850691083405899521557705689988227787187036384654263022977011149854400284754958678411636633870582670219621470547411288183081931679714837078992548282323330288773323468937974805019102283375562950349861921150037994035660525472554512367270458369512316693424357275110365137080817513123195148755802178179447803099975134439746839174283338011413458411062894320960126845861170742217107400439529873590483426646151584669746270815795201有9775位,用时2.773438秒(这个是模仿手工计算的大数乘法程序的结果,是两个4888位的整数的积,二者差别不大。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-29 19:07 | 显示全部楼层
51444229357009705498695689284160971250193663383685210722150319744748775359122621528344215567083355670451907707693695837668324532850937176166588968634971139183302944833231893556295527896594077197129683597374136482318846544941701249766624000228057981356208443093502034625140604633339848200752173361946073443933346789602235781489339265452071638593776798421165371350248039954188944931286347716381898468113203126395308096792045894764315383795943237773890910465023815013059495056496724871504126056937676152194017082586564255521359261172753102346344494396469595605609421590317944043262260210909685857159849340378368552043197433615054904807889517283559504278373784460368569113363131710769835820089387297714801594555823592854988704942365609400006675160359031426873189564916688157908871243159770851740287846140780388606189695088738739890281656349398834057714656014963811425778390967293708624696915124185083358253535415644842673421215970474230001345828538569798140378601982017699635604641896116818157526044389838198605640572986233402266712761883020099586847825852569572633701763853682554585791118171276290617527340763544892267893370992480349897757098894560281081444642200626464175280985766718573874535680797829930258859640467605975042123111209918827618958945189505091121483858392668384880612255585916669716284514087584598182477078462206558057506025592975910027871273238862247532142535304676640617802030742222960345363855404313399047401003487305799083062451448366617957439158876389882006128158868398932966157003013761952381180690259470099567236607352405809832062578837136250716574574579522256441099557123545025010455224534286356038287679467507270968220021752586057851958248281269629815734877522064508505836721271069799255388491881486092874373981729570391000600273130647608003884599134232877090354958661859302013690470784659120935109719008283905031446377686879466478045757200145506558765235925036276576557385932514483699842243149208969282746209709419000514005516153201916481898006122396813081056743478375585046327305139099481259493354791535353470596487135876104084480625694746373732139586666314758175807030769874378033442682310307356160417978581128218551702424951416328358067700064372855643925169324018021327979713630891489119622752405679286914020988030448289607684851348500009160752114318891422323287600744067214121279440814680222046223856018417356144265724960183154333728716795115561038777021231935282986402700568064230483785799261322243714775230452755725527745146038608379279371001059967865321588174151914448536764775571037973578615327517787408788110985059461002169522785318617192307181693912992506307237500768953476768331681769333002572457840566000897380416071260754878761637173736498974911969752452488135860414907554677006408084497006257159827526348595849150261985348894347311347517189966140266360964227057248211214217659928629919303435391331416005120712207885720558321487799867161206930119103421771539467972103190393682250678522174960152378558439347627175162302619603705648848836071399024952529324687084982408118133017688448503109968656956645896946048480192314682432260264700576584216400878957654828825043888501929204984177904045285658372920051397094163047427295220711030006037232321404778543967047068762469285923373134681085248777362783958346205544202145418889769398157784788073149611548376761403141486538737770037141788493712960577959363480197591519111672946073730752057180868229313890208584096158682612983816343504413873052032480697167353489552278817781586058680359059156908344548036320135631306944489774771528702304735014143703760557177453543349547306529570340616768780151482760598479170615193602006664327138648948903916355739633941308270162516652059915050276438874381771645536407119546307308602110808277470379413233095030335295424468989074162174390506430440009184822224831604762135197176296894482438955676023632858283866605177371220933941389487447042997313276813513817803438354917453446883162229251748984107795718851147870601783924833259787594255023342306507456912443550071030208718860669407813729848666895788392476265844821715329237813888850815099292377748527880672005186227029038313166577070820370953922393125548815784762480716999231112838148069211991950691916501447592610394499065364322013748152127893784838593797607394388436881471937572499635297772411428360587893831743999745591711694693866191043576499340546602519838932679411958977012716186665359051582479709075417158528580483757833679410253083165945296785222695885577370900864071489012430843034944645603735379195280025613435712355924314863811743827795636679833650340711437233826412874652976815458887323384054546632106872673123116398730467840212063933927344401665367273527255946758376081228079255930764904350921454271841369617097419767513579178639155380978815461543065893696532971327449461004174429220963114041363358314967725204392567409853114511718894307643631546965958312484908065383823412217473440414293824284526555873270491143183361295864967579855246996091265048027505060900834170125556562162551537434196084600631467998911190053595844510705466496573548607039396055020292262150204441825829591438698284355118563291933426381855788871060610209574041839838563877291133446841765141550790969420019931335118024135668252727429127277327010080630091503155817732502505948089862964510448572293708413555811826477198946284299249803359083101179231919079840587424089773469686969520331879450331982721475249327999487251751706346378904072199908362843325220090261748886455160894534618900524452334077230251228488177710026608285448160668895830056429900594111638920726702786607673617753884316181608986919842867230781499147892959393862062647527840625613367260491383202053809699049034845359408558078426790922884585937878706447640430037617295337479822942307036309880435190016603292587486670770400968414436062177558340485732399593574684408579852251099386440664715996472709503190326196112431776618496342463773705376557608878531398366891436246005211525105666657143754195682576243436684531565851133669499217182871786042547448128547212489534533546411302123733919227701350343114374027823388734105029451217607019122130451356635147739804673043366197888574741979984899062514977342811387470137829504434138089419313384856038171340813037212988564310965985781906223971603099448077768724135527428122903252985599516402675987118370871380711527621573873393516573976063479848524423462759835964891140012324519173599725428642361361068172851167497848080021674536204331012403670169210980245848637217188648225885977646348516324041545657194185298974033231835117142779160262801229836405621105156783013717293536138550388508105732780981390645713029332581014063684679894314776432826464392770191976441860111883369553100497643960158535828927475846412468513508489123966058178757981628231867323711011231048794489345211468916742191198636966985422920179595657981341141062164406674532648463185396609770870332096252014035092123588963978186735580042580980613737391270774574213143757755751883697069852771105226235745249016819851687618696867463252231114439968978315083108484001519759452354526279002448467845301138631933065317711752431130991417899009156710209089292811908604830563989259580154993086863603158178515104290720648309883842154082224320839725606296732000727693290524485776120935752414418878472294890371499306931907333324291401972007455632345852614250072853013012945436065975597114539565733294131761811647833005562233059897155413908820498684050997196891056374240379032318837109547689273707681611089403544408082721706473290499334235612885568011460256849727085076206079416052803280267260901684609292031897483601056570760086223345132418690406912044967840699532837777220337619001021407001693004319410408897824474243886961978574987768049128885543011697013044774759574717419644216280288616892251878750272403720502483146688505324945767567603316888720316011709842454310651905842456995717854658757793940654403097119500347184685565541435883956074212634458392169744262789777168587077633132878974370677442014549387267164340953922822251829239556879502763379039928986242814762702287157067194761335256675433555182851552352559991526456925347432747802313921075996819327317045132012617429811514074091399778997352474383606992439461610335483557936315809083490277649333569801959919272603011494193988786624013003967741881377298599206260756300231164329090886437111987872720242305957228698555912625065064190559304307358760347745521482896132605885281933616758212828592849681187675942076108113302381355104587574017181942465845495743839422229373653337202363728823896447570459309176646022547055965908445087430566732527561871546926404773102702246224432048449625109060660865222942173680372653073214268518784549567040501706919286193522820203414453082285837784675002393243795648411455249436388354108402298751663579641903923191755243458068049821399981406775187846920082329567089639393166189818386498916654186263236746984358665027637042973344271992431897184463116294348226018092986777330214101355286966888649547882946125231255079867781801266501967591409148337945555826175412217168447872930279389750371330475222596227129424190226136945764125273213822292916011181314116041792889396828595293322573584664017942843601763015910665616185100397070932698993189981899381369135145511919573824148872130362626325230263479916318230804739942853734691756919928756697652976490810473211849549241540762725813953930723190981637783368720629485864681219674862805281147123618369648219443914697265568489851644682338839594389798528686503462752556326463179413487639267322415342021661782198643045709866905617952560578490556995925761572422791790301321190815276469688285495731079969527242665460676072017966646761444343077050015427344485571444722043920393227173574788963017083103163316444721989304354943010481162291435220957200362001334215839785830443382672730119778260821583383111451900319444250424299632477082943256751087979956039788474826051431864034319164099434231538605886844512806083616770766960087352987672015999042087729725781568286209406499243012959626824729965732513083229107853316988026294855503591736817573411617977947178208066444763813946497537177960407804717683672825555900801570001045932685213150713168976874486410808232884111284116849192046563587472241672721878241374262778692543921036556437946028395526409981294253566007077328459635350092391027510311495022125935258197839081781965238971815941968757378341840909860278122918583537172655464084578030518848395326814814456132883655661283681249889602236359262040400558570790171815660578083313993394461197281232297422713635025375641835990588962917099757664795913739285794804584291009040868823532558841628119620925183471868549875466869188177505153666816394414723340641917940584361952079149498472812583260283068474480931678707056484324850617712080359691709776941095013091829445946057432761370542300314779715321334444713774581590337903939304335909307068426671584496871726571881716132948915253704707757591533442524766019672022390979146952076988143810119460236213746430762268682680881266193571871275412676250005946379188555706192188797559909736689205175849641808468634255402172023571037451793254632295935051586694477304538469945188289019295200159220308693052779069996610410807643313071567412266891845626199284108038066722454050607460343612828334672893446961781157291360507072467245161203248910944820605505200092458974605093030860910582001473119924624666059366859402896927689627338088946903630539201357537667544050090484167449839531197820233786114078819811021106435602077046525168822817484701691857941842610951041540933624358100404417526666393254423241305531332656040937125802579759144773272698768734115898512979467030085752261239459124785925303945800057294337283034726565387490196322782696275866332909498542885176995360658669350521506241872044343484849039111278156718242956572497097964273494066835685213469554652278302245504686473612394277905766130772765098235866298788034884139914359215975798397470111738433639102076952796435209264028021537229892074058188314207373272605636038651334696444286919565721890569881338463783989882911019234792486535699025646311275122274411175404155342249234136558802674731197305641190947858045969993105751983395792065828920796822805820210093174577065491814597082131393031622787491679856332477759009694178317375318368821390264654174039670932709831161255202873640489281967716308473047243229957004765412706536236472670869025902543540633101208028807552552098389091790435906088326534470239980054716807416750322521229220241568933467553431576752163460745670475952435493987314007198258850504885411059106007738740875539832452249589294006659624780916723181534511714197062648856491091688501221471717806381749888298525407248789423897932623271498241668092001196586363981364139438871535239207176214827065069539651733601100753810180878379274361295578405732661254466632895143727844665840866498240003655962932105277876459272466979831529282048840956209056998769042430627753436065929805338741393335042911200731019721288387249286505188391256813428739747714333379066876823883520130766201876860791210671538076160347755324700164074813292068568024238519482741252954199964042782225233360037022137076218722706203773213869098586993370170155683791146032975636525838513708976569134302322432642077565826389896215245438300187570310860480000533906713082013024652830860757006343956987254278284858371619486860324713636557288734182121660245924031628622394404845468842376014364491369333932732440011789862081204289182566535179044033371514444457023620546865608494829671941096306770681862607086197624365511249841742601689637943827647739753192488830108748993946646301337601457492499972685876684793341277398602275214653549915139511130070900252357536321474687124983694348062078037402632623766476692775678286881806982898247107838472527399024338405174424815001165897166650159739515463438185108038327958294258499979123263522591261654749484216293043245130713211428672161827666045403900761515335614916042818935205318832501058428630546098253028977703603252002538386142310863661394203801021650102355428530278355411821233551959475904697750988996697656852598884502119976493604708637198826791035572233637351986210864977795898608556238023618301984537915608930604362302527908670790232196653470383452730966437820907710683243209361014219861979941950841987346107743208561925389719631737184861993943843888754529081140961004120569137972767939179238123227568371028391438266058282117268996237434183830334056161593410007851958385930853757794469184653666509613683966762973275802915748207536233835944456492079672432074637652862475003545406240942715300755523944206787863863868182421896839656869884217377578751607363166640679526547616649957166113180795819300698729245904023050382738288763601955657437404388004070623572376563051583388185752588363242342948072258707770222618411368623353933153416998674556673828083953385859553887650200322341613752381777915208516249775540573681407970842264880494895043357543980075647268121681730910097533515842996052774514769117001511705236715668019747243088644998257802328991106887493129666979551568128160024931577019249231036351291752174562619839669581224559705587165708372744726224186073126971717311245980502449125273456503801187274837306224135490894291619763228475986831005594442019148473818854081438056466447549945298051927502134555522991323435490985690831389052274735020726873487488936336741311539022782075508436837487924255181698061213905084162235118210017590721240114251909624811608300914878701408771328813975283269700679765515272835500581808493660164914406678948764808907820590793942802060935667588289909747897748137923192813443141480658391350876193378672782928937239541344428644252704346833459652953893206406021977446066148428686466508087550385252943740960874819825685873233082410626669803645777952677637448050496360102884890873362567118473457647334943807551216752659414686723198905670826134278959453835743722477363868599024571425315726635962538691827224412670447061058393874398485976231917079164327494510859626266588302051504090008261830241447676880203477502787354055343155909715421429375559706133130062628561848592810462408089869178098913629053121350338706001334665817189902339046551719256269486698716494374181056432863341577867140583392107410719128329725480841263789204392440976393893147168046831929228725690454484457819357719649568902018996210157275940520779431450165038526154612104633755692499830669045602271953235366951774644612761172006231769432808233696581070645788729238857402139382484239571166108453915459654362102096518732505237161776583876207193384586878498200605001469543462091485286217093489852123877116301695514263030360771288829090506779042608299705238648514904644323593225819202326098687550889491884085512718311228273159016624975588461535331385403944334397175727312393731559924877557033314268586667576404657042621504624638607780996250155298180711760908316799169764459037945988617689968900369456126826878874149283922399651015788901381482653828757633905291968811496239411234225169841339242923224920997069592927984613452201769764034361265590100376142758102242622751137816624390201799073002914764480438293862303619444424411900873478825309592215448378122673841321459836000301987706900055719812275088409764751071712511442535378273186891677663024136055784679879071700250103941840442827882641509903924818054983813117941436780546475991140251422964511376459380443852419759687830723215798218632573151723785873786668931387512213704069753751304404757469294652741201772267969380591573730352006518268264387324760748171401960363123143642534623196505119663743478694232226992854384052020587978193751769297437110799401666654270086352480363252583084900758706469183711968216421628482651660307315276372014948429733174841247185477453980848109772474843390892942983417487561937787738211071008447243561370883755652297106343676574456572441499153044391296359081444755171879623563709723059551688149772138242004430113752660263595301467681684666765111293583112596306703249487247014559398847582739773923562193048979815510679889238537948008801349956448663808114950270788702178103140036903038677125953796297346185669646277919571450148386833367083965328745661813784675396536308123206255891676600557317868286970806528762125164098195448405530607155298182670078514292122809944389633521146848690175777654805756158929494558044691813620191444798686702502416738793016663859592145359839628493867351786428502743472570771842556696378878472341050391089226772333872594326009783260166152072708644780268603582214015792114037576904183214818892694863534846282524092493194220528298002349242488700100084240660739453383072745053167243114518692729966302221045624162785240731536939992864261703562670127208816099398026935794227709192951849703149047115596988121183064038969430213752390079811597488253736354183223115731539041783376124701639330021544747985885271784834839607317621722963550990654667932700528378860171449142719544032621794550522980007985794164463018892770934144461839455108854280165247825770088985804072882008966279297216038293653289676057511596687371673495287395608114205035151184670802174286673891799830707522027275731687638894711538425640185422616776596308786129781753251068811069644860389343200897476243854920541316146283393481744301776367207189490814060219073419415657802608088338315148976176160344214995925269677377836011427268405733942592393857163978388774692466472603273657739324678810087878647853020613664828824493174871401222712465054920359567267915297137560103994397010364062156242658159355701818701158670419430421561539793933721747077276577835553268786089595585704020376187707801620157668465506675415808792836465976733317453992349443769780601397893341502030028303188671864249117064284001630914762068848485387551204510364030708525634372360381675401963161254572822349974630401有19550位,用时5.6875秒(这个是利用快速傅里叶变换的程序的乘法结果,是两个9775位的整数的积,而那个模仿手工计算的程序显示内存溢出,无法计算和比较了)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-29 19:19 | 显示全部楼层
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801*
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801=
2678145490787694710138406683675886762424440548647327525594133873038347266950777818028529804877891353347244255046176220880989519574806598935727647635506939520211209794328712328126947740602255036264392628020291100698432900022333877728824270241063030019536831205264726059774673235680796770108334187808344470141093691232926021244583649747591446066921535333854157441330339217364515328375889937313870826987520723914810358707312468857074455945610038118763873992681688857200178452843740327143990247797893489008808544535536081089994800692174759199578596435124153437689121057209523619989593900355037400039597165241729693472001589594642879166693443994939359639600558001937547209387175085119128575833396037478944824322315197771750730768383267287661855880237549141571520374996029107650341071074081501632143441365461865431362023790463469688071768208320226561675630348708531708110373889241713511809029065048200924851629507265095151843687852114948736130517024578482059771284515915597919026074110811882700307150650858080695566672584075215926450360584738705106755945308199980660478183563586945902705730231409948938478910176292179410952310592864745025373902249844607078729230098512959498522851990040833671698873183076996740726479481352429756295966452788332789259316653805673821716832204368483794501474641036177256005810416507649770210480747056764697918800240201155395628561684853684747063434500664449114760179367086926249813006056735202795763742271472136500817313178050955623517148960973128433455798444839070215800699075256371341531892841721456473301085595261371522078416420399702683504171019191363372883472415693921509069484448792009627325245658854979159002549542769741504596589556474585723101403486046952706847309188488390899096649210853675228464611999630360164703837131620319658277117300208326944026347808645954842782309633205645471959842390075986572806483755223497552549948718545978420793425036666212191832327909389117021539426917904222971515424022606157676379417252939026404363841301595348953340657745965591468370831371449860774296757556463049237248472613472436666799615694672489600751763956185893123579218797539971253828850163437053164723845196089466298000486042246621634263064752906475198879616484926366053597071510886820878425907736453843197228282179943365206039514850477377542684361730162273246709577442085159313947668552462343596819299335060863266863059421286080919061657175757802930378698062290163092494909661982639303946271889619023417245433500782685534406291391527022657608608130680134939380126048353657648559735671562230714451258764762350451448379438849319710473631625533527602085050858633346936315115309333355986556546113134787213610042970405680162084678021281774169131725296977361816657904233850711837826724976507876061043779177845550646612327663283839673950405472039432309339110648301347672597370034346896334064135099613033528785924976781865447506814375627647103020761819104412269362847848884053177378762432543285984193091289854949394023586451139393716370633759317698908834326333339634557238526607966375935960004339535161203546369910853171524516945554862019134684985868547068709986010719120259421723270478586992153989283736650948010894951434857207445141886625290777550599700738909777829412358941157674866550887608199469723859806486384262574182811908513849905040209776132986875560077482527819093584150609347560543627976011009349905362597935257895287412087233810106693141683912683308201407373637490835862452911394718399632093441745957478079754723679119343225931665785380948807114301164623717144211285944154289093317610519159281033583963015810556464180819928345256832572962092994993950655913067768151113345566231088759030148164710287289335782462899525700500822021472132532771242198844498579102733028256523810973405350508253183399668290339844052874956694050028526577775764032598023622192221226501334606994447870277619118208162133562541678250491647671042612088902952091163094215645902682086024337098910110924115381788866213335441814530141911754446270296630426675020592640816713810936850961517475097707179713115856513919631998747192606018612535436009162735908155778165736923393260822217415131632296810207091918499370220533980666393617256227781299273913099896641458499949922475383775878771011361417556799406151773618626138749998464514570482965286184387350245762317271666329142667987131139265167425606863654107927682419958167046956962340419295394058625063862272314570914511355913547470055072878835349142049813368019960713974852351833144227544851625677753419141348585495260230041111323576432417502998832485027071744397105338790364666312325483218209150368759120749671419554589928540715813531144241705501211397506662448276056294585639532800634727428900861538486753011006379264618338782036690340859441153926551954112364946638768223012718907190897165613382555036872673785444132692292217184974818914501886689736449912131900762592363447945036085692999163815947845753538999001633767986447907729462453017601有4888位,用时1.296875秒(这个是利用快速傅里叶变换的乘法程序的结果,是经过优化后的程序,比起那个模仿手工计算的乘法稍微慢些)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-29 20:56 | 显示全部楼层
Public Function MPC1(D1 As String, D2 As String) As String 'jiafa
  Dim x, Y, jw '两数长度

If Len(D1) >= Len(D2) Then
  d4 = String(Len(D1) - Len(D2), "0") & D2
  d3 = D1
  Else
  d4 = D2
  d3 = String(Len(D2) - Len(D1), "0") & D1
  End If
  x = Len(d3) \ 8: Y = Len(d4) \ 8
d3 = String(8 * x + 8 - Len(d3), "0") & d3
  d4 = String(8 * Y + 8 - Len(d4), "0") & d4
  x = x + 1: Y = Y + 1
  Dim a() As String, B1() As String, C1() As String, E1() As String
  ReDim a(1 To x)
  ReDim B1(1 To Y)
  ReDim C1(1 To x)
  ReDim E1(1 To x)
  Dim I, J, C2, CJ
  For J = Y To 1 Step -1 'D2
  jw = 0 '进位清0
  B1(J) = Mid$(d4, J * 8 - 7, 8) '每位数
For I = x To 1 Step -1  'D1
     a(I) = Mid$(d3, I * 8 - 7, 8) '每位数
   C1(I) = Val(a(I)) + Val(B1(I)) + Val(jw) '计算jia
   If Len(C1(I)) < 8 Then
   C1(I) = String(8 - Len(C1(I)), "0") & C1(I)
   Else
   C1(I) = C1(I)
   End If
     jw = Left(C1(I), Len(C1(I)) - 8)
     E1(I) = Right(C1(I), 8)
    Next
    Next
    For r = 1 To x
    If jw = 0 Then
    MPC1 = MPC1 & E1(r)
    Else
    jc = jc & E1(r)
    MPC1 = jw & jc
    End If
    Next
   MPC1 = Trim(MPC1)
  End Function
'改进的大数加法程序,这样可能更快些。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 22:18 | 显示全部楼层
可见,利用快速傅里叶变换的乘法计算太复杂,不节约时间,优点是不占用内存,可能利用快速数论变换的乘法好一点,可惜咱不会。
所以,准备采用模仿手工计算的乘法与分治法结合的办法试试。

谢谢各位老师,祝您晚安!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-1 22:27 | 显示全部楼层
2678145490787694710138406683675886762424440548647327525594133873038347266950777818028529804877891353347244255046176220880989519574806598935727647635506939520211209794328712328126947740602255036264392628020291100698432900022333877728824270241063030019536831205264726059774673235680796770108334187808344470141093691232926021244583649747591446066921535333854157441330339217364515328375889937313870826987520723914810358707312468857074455945610038118763873992681688857200178452843740327143990247797893489008808544535536081089994800692174759199578596435124153437689121057209523619989593900355037400039597165241729693472001589594642879166693443994939359639600558001937547209387175085119128575833396037478944824322315197771750730768383267287661855880237549141571520374996029107650341071074081501632143441365461865431362023790463469688071768208320226561675630348708531708110373889241713511809029065048200924851629507265095151843687852114948736130517024578482059771284515915597919026074110811882700307150650858080695566672584075215926450360584738705106755945308199980660478183563586945902705730231409948938478910176292179410952310592864745025373902249844607078729230098512959498522851990040833671698873183076996740726479481352429756295966452788332789259316653805673821716832204368483794501474641036177256005810416507649770210480747056764697918800240201155395628561684853684747063434500664449114760179367086926249813006056735202795763742271472136500817313178050955623517148960973128433455798444839070215800699075256371341531892841721456473301085595261371522078416420399702683504171019191363372883472415693921509069484448792009627325245658854979159002549542769741504596589556474585723101403486046952706847309188488390899096649210853675228464611999630360164703837131620319658277117300208326944026347808645954842782309633205645471959842390075986572806483755223497552549948718545978420793425036666212191832327909389117021539426917904222971515424022606157676379417252939026404363841301595348953340657745965591468370831371449860774296757556463049237248472613472436666799615694672489600751763956185893123579218797539971253828850163437053164723845196089466298000486042246621634263064752906475198879616484926366053597071510886820878425907736453843197228282179943365206039514850477377542684361730162273246709577442085159313947668552462343596819299335060863266863059421286080919061657175757802930378698062290163092494909661982639303946271889619023417245433500782685534406291391527022657608608130680134939380126048353657648559735671562230714451258764762350451448379438849319710473631625533527602085050858633346936315115309333355986556546113134787213610042970405680162084678021281774169131725296977361816657904233850711837826724976507876061043779177845550646612327663283839673950405472039432309339110648301347672597370034346896334064135099613033528785924976781865447506814375627647103020761819104412269362847848884053177378762432543285984193091289854949394023586451139393716370633759317698908834326333339634557238526607966375935960004339535161203546369910853171524516945554862019134684985868547068709986010719120259421723270478586992153989283736650948010894951434857207445141886625290777550599700738909777829412358941157674866550887608199469723859806486384262574182811908513849905040209776132986875560077482527819093584150609347560543627976011009349905362597935257895287412087233810106693141683912683308201407373637490835862452911394718399632093441745957478079754723679119343225931665785380948807114301164623717144211285944154289093317610519159281033583963015810556464180819928345256832572962092994993950655913067768151113345566231088759030148164710287289335782462899525700500822021472132532771242198844498579102733028256523810973405350508253183399668290339844052874956694050028526577775764032598023622192221226501334606994447870277619118208162133562541678250491647671042612088902952091163094215645902682086024337098910110924115381788866213335441814530141911754446270296630426675020592640816713810936850961517475097707179713115856513919631998747192606018612535436009162735908155778165736923393260822217415131632296810207091918499370220533980666393617256227781299273913099896641458499949922475383775878771011361417556799406151773618626138749998464514570482965286184387350245762317271666329142667987131139265167425606863654107927682419958167046956962340419295394058625063862272314570914511355913547470055072878835349142049813368019960713974852351833144227544851625677753419141348585495260230041111323576432417502998832485027071744397105338790364666312325483218209150368759120749671419554589928540715813531144241705501211397506662448276056294585639532800634727428900861538486753011006379264618338782036690340859441153926551954112364946638768223012718907190897165613382555036872673785444132692292217184974818914501886689736449912131900762592363447945036085692999163815947845753538999001633767986447907729462453017601有4888位,用时17.67188秒(这回可能结果对了,速度不快,不过也算是一种方法。这就是结合模仿手工竖式乘法做的分治法程序。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-1 22:28 | 显示全部楼层
发一下这个程序供大家参考,欢迎老师探讨沟通和指导帮助!谢谢!
(看来,最快的应该是数论变换式的乘法程序,可惜咱不会呀!)
下面是代码:

Private Sub Command1_Click()
Dim a, B
Dim ja(), jb()
a = Trim(Text1): B = Trim(Text2): a3 = a: b3 = B
ts = Timer
If Len(a) < Len(B) Then
a = String(Len(B) - Len(a), "0") & a
B = B
Else
a = a
B = String(Len(a) - Len(B), "0") & B
End If
x = Len(a) \ 300: Y = x + 2: x11 = x
sb = Y * 2
a = String(Val(sb * 300 - Len(a)), "0") & a
B = String(Val(sb * 300 - Len(B)), "0") & B
x = sb / 2
ReDim ja(0 To x - 1): ReDim jb(-x + 1 To x - 1)
For I = 0 To x - 1
ja(I) = Mid(a, Len(a) - 600 * I - 599, 600)
jb(I) = Mid(B, Len(B) - 600 * I - 599, 600)
'倒序输出,减少加法计算量,提高速度
Next
For i0 = -1 To -x + 1 Step -1
jb(i0) = String(600, "0")
Next

jw2 = 0: jw3 = 0
For i1 = 0 To x - 1

d3 = ""
   For i2 = 0 To x - 1
a1 = Mid(ja(i2), 1, 300): a2 = Mid(ja(i2), 301, 300)
B1 = Mid(jb(i1 - i2), 1, 300): b2 = Mid(jb(i1 - i2), 301, 300)
C1 = MbC(Trim(a1), Trim(B1)): C2 = MbC(Trim(a2), Trim(b2))
c3 = MPC1(Trim(a1), Trim(a2)): c4 = MPC1(Trim(B1), Trim(b2))
c5 = MbC(Trim(c3), Trim(c4))
D1 = MPC(Trim(c5), Trim(C1)): D1 = MPC(Trim(D1), Trim(C2))
D2 = MPC1(Trim(C1) & String(600, "0"), Trim(D1) & String(300, "0"))
D2 = MPC1(Trim(D2), Trim(C2))
d3 = MPC1(Trim(D2), Trim(d3))
Print qqdl(Trim(d3))
  Next
  d3 = MPC1(Trim(d3), Trim(jw3))
  d5 = d3
  If Len(d3) <= 600 Then
  jw3 = 0
  Else
  jw3 = Left(d3, Len(d3) - 600)
  End If
  d3 = Right(d3, 600)

d4 = Trim(d3) & Trim(d4)
Next

d4 = Trim(jw3) & Trim(d4)
d4 = qqdl(Trim(d4))
d10 = Mid(d4, 1, 88)
Text3 = d4 & "有" & Len(d4) & "位,用时" & Timer - ts & "秒"
End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""

End Sub

Public Function MbC(D1 As String, D2 As String) As String
Dim x, Y ';两数长度
x = Len(D1) \ 4: Y = Len(D2) \ 4
d3 = String(4 * x + 4 - Len(D1), "0") & D1
d4 = String(4 * Y + 4 - Len(D2), "0") & D2
x = x + 1: Y = Y + 1
Dim a() As String
ReDim a(4 To 4 * x + 4 * Y, 4 To 4 * Y)
Dim I, J, C1, C2, CJ, JW, s, t
For J = 4 * Y To 4 Step -4 ';D2
JW = 0 ';进位清0
C2 = Mid(d4, J - 3, 4) ';每位数
For I = 4 * x To 4 Step -4 ';D1
C1 = Mid(d3, I - 3, 4) ';每位数
CJ = Val(C1) * Val(C2) + JW ';计算乘积
c = I + J: r = 4 * Y + 4 - J
a(c, r) = String(4 - Len(CJ Mod 10000), "0") & CJ Mod 10000 ';本位
JW = CJ \ 10000 ';进位
Next
a(c - 4, r) = JW
Next
Dim B() As String
ReDim B(1 To x + Y)
JW = 0
For s = x + Y To 1 Step -1
Bit = JW
For t = 1 To Y
Bit = Bit + Val(a(4 * s, 4 * t))
Next
B(s) = String(4 - Len(Bit Mod 10000), "0") & Bit Mod 10000
JW = Bit \ 10000
Next
If B(1) > 0 Then
MbC = Val(Left(MbC, 5)) & Mid(MbC, 6) & B(1)
Else
MbC = Val(Left(MbC, 5)) & Mid(MbC, 6)
End If
For s = 2 To x + Y
MbC = Val(Left(MbC, 5)) & Mid(MbC, 6) & B(s)
Next
End Function

'该程序已经做了修改,是模仿手工计算的程序,采用4位一组,在位数少于5000的时候,此程序居然比快速傅里叶变换的乘法还快!

Public Function MPC1(D1 As String, D2 As String) As String 'jiafa
  Dim x, Y, JW '两数长度
If qqdl(D1) = "0" Then
MPC1 = D2
ElseIf qqdl(D2) = "0" Then
MPC1 = D1
Else
If Len(D1) >= Len(D2) Then
  d4 = String(Len(D1) - Len(D2), "0") & D2
  d3 = D1
  Else
  d4 = D2
  d3 = String(Len(D2) - Len(D1), "0") & D1
  End If
  x = Len(d3) \ 8: Y = Len(d4) \ 8
  If 8 * x < Len(d3) Then
  d3 = String(8 * x + 8 - Len(d3), "0") & d3
  d4 = String(8 * Y + 8 - Len(d4), "0") & d4
  x = x + 1: Y = Y + 1
  Else
  x = x: Y = Y
  d3 = d3: d4 = d4
  End If
  Dim a() As String, B1() As String, C1() As String, E1() As String
  ReDim a(1 To x)
  ReDim B1(1 To Y)
  ReDim C1(1 To x)
  ReDim E1(1 To x)
  Dim I, J, C2, CJ
  For J = Y To 1 Step -1 'D2
  JW = 0 '进位清0
  B1(J) = Mid$(d4, J * 8 - 7, 8) '每位数
For I = x To 1 Step -1  'D1
     a(I) = Mid$(d3, I * 8 - 7, 8) '每位数
   C1(I) = Val(a(I)) + Val(B1(I)) + Val(JW) '计算jia
   If Len(C1(I)) < 8 Then
   C1(I) = String(8 - Len(C1(I)), "0") & C1(I)
   Else
   C1(I) = C1(I)
   End If
     JW = Left(C1(I), Len(C1(I)) - 8)
     E1(I) = Right(C1(I), 8)
    Next
    Next
    For r = 1 To x
    If JW = 0 Then
    MPC1 = MPC1 & E1(r)
    Else
    jc = jc & E1(r)
    MPC1 = JW & jc
    End If
    Next
   MPC1 = qqdl(Trim(MPC1))
   End If
  End Function
  
  Public Function MPC(D1 As String, D2 As String) As String ';jianfaqi
Dim x, Y ';两数长度
If Len(D1) >= Len(D2) Then
d4 = String(Len(D1) - Len(D2), "0") & D2
d3 = D1
Else
d4 = D2
d3 = String(Len(D2) - Len(D1), "0") & D1
End If
x = Len(d3): Y = Len(d4)
Dim a() As Integer, B1() As Integer, C1() As Integer, E1() As Integer
ReDim a(1 To x)
ReDim B1(1 To Y)
ReDim C1(1 To x)
ReDim E1(1 To x)
Dim I, J, C2, CJ, JW
For J = Y To 1 Step -1 ';D2
JW = 1 ';yu jie weichuzhi
B1(J) = Mid(d4, J, 1) ';每位数
For I = x To 1 Step -1  ';D1
   a(I) = Mid(d3, I, 1) ';每位数
   C1(I) = 10 + a(I) - B1(I) - 1 + JW ';计算jia
   JW = C1(I) \ 10
   E1(I) = C1(I) Mod 10
  Next
  Next
  For r = 1 To x
  MPC = MPC & E1(r)
  For I = 1 To Len(MPC)
    If Not Mid(MPC, I, 1) = "0" Then
        Exit For
    End If
Next
strtmp = Mid(MPC, I)
  If Len(strtmp) = 0 Then
  MPC = "0"
  Else
MPC = strtmp
End If
  Next
  
  
End Function

  
  Private Function qqdl(sa As String) As String

  
  For I = 1 To Len(sa)
    If Not Mid(sa, I, 1) = "0" Then
        Exit For
    End If
Next
strtmp = Mid(sa, I)
  If Len(strtmp) = 0 Then
  qqdl = "0"
  Else
qqdl = strtmp
End If
End Function
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-2 09:58 | 显示全部楼层
把那个模仿手工竖式计算的乘法程序也改为分治法,会怎么样呢?能提供速度吗?有空了试试!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-4-29 09:08 , Processed in 0.070313 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表