| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 31008 人关注过本帖
标题:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
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
  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 Function

Public Function MPC(D1 As String, D2 As String) As String ';jianfaqi
  Dim x, Y ';两数长度
  If qqdl(D2) = "0" Then
  MPC = 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
  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, jw
  For J = Y To 1 Step -1 ';D2
  jw = 1 ';yu jie weichuzhi
  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(1 & a(I)) - Val(B1(I)) - Val(1) + Val(jw) ';计算jia
   If Len(C1(I)) <= 8 Then
   jw = 0
   C1(I) = String(8 - Len(C1(I)), "0") & C1(I)
   Else
     jw = Left(C1(I), Len(C1(I)) - 8)
     End If
     E1(I) = Right(C1(I), 8)
     If Len(E1(I)) < 8 Then
     E1(I) = String(8 - Len(E1(I)), "0") & E1(I)
     Else
     E1(I) = E1(I)
     End If
     
    Next
    Next
    For r = 1 To x
    MPC = MPC & E1(r)
    If Len(MPC) > Len(D1) Then
    MPC = Mid(MPC, Len(MPC) - Len(D1) + 1)
    Else
    MPC = MPC
    End If
    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 If
   
  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 23:44编辑过]

2021-03-25 06:04
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801*
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801=
2678145490787694710138406683675886762424440548647327525594133873038347266950777818028529804877891353347244255046176220880989519574806598935727647635506939520211209794328712328126947740602255036264392628020291100698432900022333877728824270241063030019536831205264726059774673235680796770108334187808344470141093691232926021244583649747591446066921535333854157441330339217364515328375889937313870826987520723914810358707312468857074455945610038118763873992681688857200178452843740327143990247797893489008808544535536081089994800692174759199578596435124153437689121057209523619989593900355037400039597165241729693472001589594642879166693443994939359639600558001937547209387175085119128575833396037478944824322315197771750730768383267287661855880237549141571520374996029107650341071074081501632143441365461865431362023790463469688071768208320226561675630348708531708110373889241713511809029065048200924851629507265095151843687852114948736130517024578482059771284515915597919026074110811882700307150650858080695566672584075215926450360584738705106755945308199980660478183563586945902705730231409948938478910176292179410952310592864745025373902249844607078729230098512959498522851990040833671698873183076996740726479481352429756295966452788332789259316653805673821716832204368483794501474641036177256005810416507649770210480747056764697918800240201155395628561684853684747063434500664449114760179367086926249813006056735202795763742271472136500817313178050955623517148960973128433455798444839070215800699075256371341531892841721456473301085595261371522078416420399702683504171019191363372883472415693921509069484448792009627325245658854979159002549542769741504596589556474585723101403486046952706847309188488390899096649210853675228464611999630360164703837131620319658277117300208326944026347808645954842782309633205645471959842390075986572806483755223497552549948718545978420793425036666212191832327909389117021539426917904222971515424022606157676379417252939026404363841301595348953340657745965591468370831371449860774296757556463049237248472613472436666799615694672489600751763956185893123579218797539971253828850163437053164723845196089466298000486042246621634263064752906475198879616484926366053597071510886820878425907736453843197228282179943365206039514850477377542684361730162273246709577442085159313947668552462343596819299335060863266863059421286080919061657175757802930378698062290163092494909661982639303946271889619023417245433500782685534406291391527022657608608130680134939380126048353657648559735671562230714451258764762350451448379438849319710473631625533527602085050858633346936315115309333355986556546113134787213610042970405680162084678021281774169131725296977361816657904233850711837826724976507876061043779177845550646612327663283839673950405472039432309339110648301347672597370034346896334064135099613033528785924976781865447506814375627647103020761819104412269362847848884053177378762432543285984193091289854949394023586451139393716370633759317698908834326333339634557238526607966375935960004339535161203546369910853171524516945554862019134684985868547068709986010719120259421723270478586992153989283736650948010894951434857207445141886625290777550599700738909777829412358941157674866550887608199469723859806486384262574182811908513849905040209776132986875560077482527819093584150609347560543627976011009349905362597935257895287412087233810106693141683912683308201407373637490835862452911394718399632093441745957478079754723679119343225931665785380948807114301164623717144211285944154289093317610519159281033583963015810556464180819928345256832572962092994993950655913067768151113345566231088759030148164710287289335782462899525700500822021472132532771242198844498579102733028256523810973405350508253183399668290339844052874956694050028526577775764032598023622192221226501334606994447870277619118208162133562541678250491647671042612088902952091163094215645902682086024337098910110924115381788866213335441814530141911754446270296630426675020592640816713810936850961517475097707179713115856513919631998747192606018612535436009162735908155778165736923393260822217415131632296810207091918499370220533980666393617256227781299273913099896641458499949922475383775878771011361417556799406151773618626138749998464514570482965286184387350245762317271666329142667987131139265167425606863654107927682419958167046956962340419295394058625063862272314570914511355913547470055072878835349142049813368019960713974852351833144227544851625677753419141348585495260230041111323576432417502998832485027071744397105338790364666312325483218209150368759120749671419554589928540715813531144241705501211397506662448276056294585639532800634727428900861538486753011006379264618338782036690340859441153926551954112364946638768223012718907190897165613382555036872673785444132692292217184974818914501886689736449912131900762592363447945036085692999163815947845753538999001633767986447907729462453017601有4888位,用时1.316406秒(这个是前面的4位一组的快速乘法程序的结果,这个速度已经可以用来搜索和判断几千位的大素数了,但距离世界纪录还远着呢,继续优化吧,继续努力!)
2021-03-25 14:39
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
还可以用迭代法快速计算,发个截图,如何算的?希望老师指点,谢谢!
图片附件: 游客没有浏览图片的权限,请 登录注册
2021-03-26 21:41
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
这个迭代法会用到复数域,会用到如下公式:
sinx=(e^ix-e^-ix)/(2i),cosx=(e^ix+e^-ix)/2.\叫做欧拉公式.将e^ix=cosx+isinx中的x取作π就得到:e^iπ+1=0.这个也叫做欧拉公式.
复数除法定义:满足(c+di)(x+yi)=(a+bi)的复数x+yi(x,y∈R)叫复数a+bi除以复数c+di的商。

运算方法:可以把除法换算成乘法做,在分子分母同时乘上分母的共轭.。所谓共轭你可以理解为加减号的变换,互为共轭的两个复数相乘是个实常数。

复数除法:(a+bi)/(c+di)=((a+bi)/(c+di))*((c-di)/(c-di))=((ac+bd)/(c^2+d^2))+((bc-ad)/(c^2+d^2))i

棣莫佛定理:对于复数z=r(cosθ+isinθ),有z的n次幂为:z^n=r^n*(cosnθ+isinnθ).

这个迭代法会用到这么多公式,每次迭代都会用到多种公式,都是大数运算,即使迭代次数很少,速度也不会太快,消耗时间长,这个怕是不快。
2021-03-28 23:01
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
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的时候,此程序居然比快速傅里叶变换的乘法还快!
2021-03-30 22:02
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999950000000000000000000000000000000000000000000000001*9=899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999550000000000000000000000000000000000000000000000009有321位,用时0秒。
2021-03-30 22:03
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801*
51750801837147361345408953922231823615475578427966187002956389087112242842559611794590895524485015222232340190036677951157401229518412775512617768569186939216558814320044037671525512763073762127357272238470370174050144130962253437215369727381909754581075278888137687950749577751967083233227932391898438489520107788418593104216764745143648165875043861634459264809523254076330115365651752264033578829280651927862062277153553168278640509846511729608378923480331705134467105387853440058108864733429085916392927954109944314725590758950098556991513109760871599045355054258610189920009222629391227784118536578933067532162200768112408111142115021110731900107445187734955403922470144187293970602024056652942406064101184615113779243566842311336047149767396006622923831778833173731302325162741660053390002572456069410383734906953419854919650114722834689335022576764661864630532595250136417800041415827379233503655173380741283758557001102498493237113089198106283487003030225058520047964863929279622015825870972146222540614667928697270131499340362072956956518213266361286372027834000838185920579641835952404678850816456467012890793914108776148483471455515695596694573035435841962871983614397882366460940068418989292218104650923374259244879331938925143014431488635252724366437874702141802712286424754174951797598162531093933772708024046029028652425912112434874797404878317364682580259997737809632860143160557722236459697738869857870982308547756781808568834445404196611833859447257611721058384661943492980180884154939581533269700568975940675513953240040220315659784214936947443784598154082110443748171557676558299300252057475022409541083454882202785077569281268346332901357829843950754331120530978456454396022570647840977328115888711408099894489014427119253061839770890965114853246067272044090282103668762164047374624856119676063310166566519499552342907590495696658359542582469176737197423550084705962160477441546453931948920780829433665262356431973422034925001341330921812806939990688094288773216182971976433480031438271163051341645350474631300965486818841553843112688792803367397276204832936049162335586140151875524537720425345701193713093955432559579831822084761702059241698184717469616732582600658006352069963017377661059372648121969448644394344799369193952197519795756182552461838014896498816263546256621347748100920475049252091842372001283217811864786225692344297842649982716736752004086642881662614773154743879410328420184057019873899911520017723788801=
2678145490787694710138406683675886762424440548647327525594133873038347266950777818028529804877891353347244255046176220880989519574806598935727647635506939520211209794328712328126947740602255036264392628020291100698432900022333877728824270241063030019536831205264726059774673235680796770108334187808344470141093691232926021244583649747591446066921535333854157441330339217364515328375889937313870826987520723914810358707312468857074455945610038118763873992681688857200178452843740327143990247797893489008808544535536081089994800692174759199578596435124153437689121057209523619989593900355037400039597165241729693472001589594642879166693443994939359639600558001937547209387175085119128575833396037478944824322315197771750730768383267287661855880237549141571520374996029107650341071074081501632143441365461865431362023790463469688071768208320226561675630348708531708110373889241713511809029065048200924851629507265095151843687852114948736130517024578482059771284515915597919026074110811882700307150650858080695566672584075215926450360584738705106755945308199980660478183563586945902705730231409948938478910176292179410952310592864745025373902249844607078729230098512959498522851990040833671698873183076996740726479481352429756295966452788332789259316653805673821716832204368483794501474641036177256005810416507649770210480747056764697918800240201155395628561684853684747063434500664449114760179367086926249813006056735202795763742271472136500817313178050955623517148960973128433455798444839070215800699075256371341531892841721456473301085595261371522078416420399702683504171019191363372883472415693921509069484448792009627325245658854979159002549542769741504596589556474585723101403486046952706847309188488390899096649210853675228464611999630360164703837131620319658277117300208326944026347808645954842782309633205645471959842390075986572806483755223497552549948718545978420793425036666212191832327909389117021539426917904222971515424022606157676379417252939026404363841301595348953340657745965591468370831371449860774296757556463049237248472613472436666799615694672489600751763956185893123579218797539971253828850163437053164723845196089466298000486042246621634263064752906475198879616484926366053597071510886820878425907736453843197228282179943365206039514850477377542684361730162273246709577442085159313947668552462343596819299335060863266863059421286080919061657175757802930378698062290163092494909661982639303946271889619023417245433500782685534406291391527022657608608130680134939380126048353657648559735671562230714451258764762350451448379438849319710473631625533527602085050858633346936315115309333355986556546113134787213610042970405680162084678021281774169131725296977361816657904233850711837826724976507876061043779177845550646612327663283839673950405472039432309339110648301347672597370034346896334064135099613033528785924976781865447506814375627647103020761819104412269362847848884053177378762432543285984193091289854949394023586451139393716370633759317698908834326333339634557238526607966375935960004339535161203546369910853171524516945554862019134684985868547068709986010719120259421723270478586992153989283736650948010894951434857207445141886625290777550599700738909777829412358941157674866550887608199469723859806486384262574182811908513849905040209776132986875560077482527819093584150609347560543627976011009349905362597935257895287412087233810106693141683912683308201407373637490835862452911394718399632093441745957478079754723679119343225931665785380948807114301164623717144211285944154289093317610519159281033583963015810556464180819928345256832572962092994993950655913067768151113345566231088759030148164710287289335782462899525700500822021472132532771242198844498579102733028256523810973405350508253183399668290339844052874956694050028526577775764032598023622192221226501334606994447870277619118208162133562541678250491647671042612088902952091163094215645902682086024337098910110924115381788866213335441814530141911754446270296630426675020592640816713810936850961517475097707179713115856513919631998747192606018612535436009162735908155778165736923393260822217415131632296810207091918499370220533980666393617256227781299273913099896641458499949922475383775878771011361417556799406151773618626138749998464514570482965286184387350245762317271666329142667987131139265167425606863654107927682419958167046956962340419295394058625063862272314570914511355913547470055072878835349142049813368019960713974852351833144227544851625677753419141348585495260230041111323576432417502998832485027071744397105338790364666312325483218209150368759120749671419554589928540715813531144241705501211397506662448276056294585639532800634727428900861538486753011006379264618338782036690340859441153926551954112364946638768223012718907190897165613382555036872673785444132692292217184974818914501886689736449912131900762592363447945036085692999163815947845753538999001633767986447907729462453017601有4888位,用时0.6796875秒。
这比利用快速傅里叶变换的程序还快呢!咋回事?
2021-03-30 22:03
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
51444229357009705498695689284160971250193663383685210722150319744748775359122621528344215567083355670451907707693695837668324532850937176166588968634971139183302944833231893556295527896594077197129683597374136482318846544941701249766624000228057981356208443093502034625140604633339848200752173361946073443933346789602235781489339265452071638593776798421165371350248039954188944931286347716381898468113203126395308096792045894764315383795943237773890910465023815013059495056496724871504126056937676152194017082586564255521359261172753102346344494396469595605609421590317944043262260210909685857159849340378368552043197433615054904807889517283559504278373784460368569113363131710769835820089387297714801594555823592854988704942365609400006675160359031426873189564916688157908871243159770851740287846140780388606189695088738739890281656349398834057714656014963811425778390967293708624696915124185083358253535415644842673421215970474230001345828538569798140378601982017699635604641896116818157526044389838198605640572986233402266712761883020099586847825852569572633701763853682554585791118171276290617527340763544892267893370992480349897757098894560281081444642200626464175280985766718573874535680797829930258859640467605975042123111209918827618958945189505091121483858392668384880612255585916669716284514087584598182477078462206558057506025592975910027871273238862247532142535304676640617802030742222960345363855404313399047401003487305799083062451448366617957439158876389882006128158868398932966157003013761952381180690259470099567236607352405809832062578837136250716574574579522256441099557123545025010455224534286356038287679467507270968220021752586057851958248281269629815734877522064508505836721271069799255388491881486092874373981729570391000600273130647608003884599134232877090354958661859302013690470784659120935109719008283905031446377686879466478045757200145506558765235925036276576557385932514483699842243149208969282746209709419000514005516153201916481898006122396813081056743478375585046327305139099481259493354791535353470596487135876104084480625694746373732139586666314758175807030769874378033442682310307356160417978581128218551702424951416328358067700064372855643925169324018021327979713630891489119622752405679286914020988030448289607684851348500009160752114318891422323287600744067214121279440814680222046223856018417356144265724960183154333728716795115561038777021231935282986402700568064230483785799261322243714775230452755725527745146038608379279371001059967865321588174151914448536764775571037973578615327517787408788110985059461002169522785318617192307181693912992506307237500768953476768331681769333002572457840566000897380416071260754878761637173736498974911969752452488135860414907554677006408084497006257159827526348595849150261985348894347311347517189966140266360964227057248211214217659928629919303435391331416005120712207885720558321487799867161206930119103421771539467972103190393682250678522174960152378558439347627175162302619603705648848836071399024952529324687084982408118133017688448503109968656956645896946048480192314682432260264700576584216400878957654828825043888501929204984177904045285658372920051397094163047427295220711030006037232321404778543967047068762469285923373134681085248777362783958346205544202145418889769398157784788073149611548376761403141486538737770037141788493712960577959363480197591519111672946073730752057180868229313890208584096158682612983816343504413873052032480697167353489552278817781586058680359059156908344548036320135631306944489774771528702304735014143703760557177453543349547306529570340616768780151482760598479170615193602006664327138648948903916355739633941308270162516652059915050276438874381771645536407119546307308602110808277470379413233095030335295424468989074162174390506430440009184822224831604762135197176296894482438955676023632858283866605177371220933941389487447042997313276813513817803438354917453446883162229251748984107795718851147870601783924833259787594255023342306507456912443550071030208718860669407813729848666895788392476265844821715329237813888850815099292377748527880672005186227029038313166577070820370953922393125548815784762480716999231112838148069211991950691916501447592610394499065364322013748152127893784838593797607394388436881471937572499635297772411428360587893831743999745591711694693866191043576499340546602519838932679411958977012716186665359051582479709075417158528580483757833679410253083165945296785222695885577370900864071489012430843034944645603735379195280025613435712355924314863811743827795636679833650340711437233826412874652976815458887323384054546632106872673123116398730467840212063933927344401665367273527255946758376081228079255930764904350921454271841369617097419767513579178639155380978815461543065893696532971327449461004174429220963114041363358314967725204392567409853114511718894307643631546965958312484908065383823412217473440414293824284526555873270491143183361295864967579855246996091265048027505060900834170125556562162551537434196084600631467998911190053595844510705466496573548607039396055020292262150204441825829591438698284355118563291933426381855788871060610209574041839838563877291133446841765141550790969420019931335118024135668252727429127277327010080630091503155817732502505948089862964510448572293708413555811826477198946284299249803359083101179231919079840587424089773469686969520331879450331982721475249327999487251751706346378904072199908362843325220090261748886455160894534618900524452334077230251228488177710026608285448160668895830056429900594111638920726702786607673617753884316181608986919842867230781499147892959393862062647527840625613367260491383202053809699049034845359408558078426790922884585937878706447640430037617295337479822942307036309880435190016603292587486670770400968414436062177558340485732399593574684408579852251099386440664715996472709503190326196112431776618496342463773705376557608878531398366891436246005211525105666657143754195682576243436684531565851133669499217182871786042547448128547212489534533546411302123733919227701350343114374027823388734105029451217607019122130451356635147739804673043366197888574741979984899062514977342811387470137829504434138089419313384856038171340813037212988564310965985781906223971603099448077768724135527428122903252985599516402675987118370871380711527621573873393516573976063479848524423462759835964891140012324519173599725428642361361068172851167497848080021674536204331012403670169210980245848637217188648225885977646348516324041545657194185298974033231835117142779160262801229836405621105156783013717293536138550388508105732780981390645713029332581014063684679894314776432826464392770191976441860111883369553100497643960158535828927475846412468513508489123966058178757981628231867323711011231048794489345211468916742191198636966985422920179595657981341141062164406674532648463185396609770870332096252014035092123588963978186735580042580980613737391270774574213143757755751883697069852771105226235745249016819851687618696867463252231114439968978315083108484001519759452354526279002448467845301138631933065317711752431130991417899009156710209089292811908604830563989259580154993086863603158178515104290720648309883842154082224320839725606296732000727693290524485776120935752414418878472294890371499306931907333324291401972007455632345852614250072853013012945436065975597114539565733294131761811647833005562233059897155413908820498684050997196891056374240379032318837109547689273707681611089403544408082721706473290499334235612885568011460256849727085076206079416052803280267260901684609292031897483601056570760086223345132418690406912044967840699532837777220337619001021407001693004319410408897824474243886961978574987768049128885543011697013044774759574717419644216280288616892251878750272403720502483146688505324945767567603316888720316011709842454310651905842456995717854658757793940654403097119500347184685565541435883956074212634458392169744262789777168587077633132878974370677442014549387267164340953922822251829239556879502763379039928986242814762702287157067194761335256675433555182851552352559991526456925347432747802313921075996819327317045132012617429811514074091399778997352474383606992439461610335483557936315809083490277649333569801959919272603011494193988786624013003967741881377298599206260756300231164329090886437111987872720242305957228698555912625065064190559304307358760347745521482896132605885281933616758212828592849681187675942076108113302381355104587574017181942465845495743839422229373653337202363728823896447570459309176646022547055965908445087430566732527561871546926404773102702246224432048449625109060660865222942173680372653073214268518784549567040501706919286193522820203414453082285837784675002393243795648411455249436388354108402298751663579641903923191755243458068049821399981406775187846920082329567089639393166189818386498916654186263236746984358665027637042973344271992431897184463116294348226018092986777330214101355286966888649547882946125231255079867781801266501967591409148337945555826175412217168447872930279389750371330475222596227129424190226136945764125273213822292916011181314116041792889396828595293322573584664017942843601763015910665616185100397070932698993189981899381369135145511919573824148872130362626325230263479916318230804739942853734691756919928756697652976490810473211849549241540762725813953930723190981637783368720629485864681219674862805281147123618369648219443914697265568489851644682338839594389798528686503462752556326463179413487639267322415342021661782198643045709866905617952560578490556995925761572422791790301321190815276469688285495731079969527242665460676072017966646761444343077050015427344485571444722043920393227173574788963017083103163316444721989304354943010481162291435220957200362001334215839785830443382672730119778260821583383111451900319444250424299632477082943256751087979956039788474826051431864034319164099434231538605886844512806083616770766960087352987672015999042087729725781568286209406499243012959626824729965732513083229107853316988026294855503591736817573411617977947178208066444763813946497537177960407804717683672825555900801570001045932685213150713168976874486410808232884111284116849192046563587472241672721878241374262778692543921036556437946028395526409981294253566007077328459635350092391027510311495022125935258197839081781965238971815941968757378341840909860278122918583537172655464084578030518848395326814814456132883655661283681249889602236359262040400558570790171815660578083313993394461197281232297422713635025375641835990588962917099757664795913739285794804584291009040868823532558841628119620925183471868549875466869188177505153666816394414723340641917940584361952079149498472812583260283068474480931678707056484324850617712080359691709776941095013091829445946057432761370542300314779715321334444713774581590337903939304335909307068426671584496871726571881716132948915253704707757591533442524766019672022390979146952076988143810119460236213746430762268682680881266193571871275412676250005946379188555706192188797559909736689205175849641808468634255402172023571037451793254632295935051586694477304538469945188289019295200159220308693052779069996610410807643313071567412266891845626199284108038066722454050607460343612828334672893446961781157291360507072467245161203248910944820605505200092458974605093030860910582001473119924624666059366859402896927689627338088946903630539201357537667544050090484167449839531197820233786114078819811021106435602077046525168822817484701691857941842610951041540933624358100404417526666393254423241305531332656040937125802579759144773272698768734115898512979467030085752261239459124785925303945800057294337283034726565387490196322782696275866332909498542885176995360658669350521506241872044343484849039111278156718242956572497097964273494066835685213469554652278302245504686473612394277905766130772765098235866298788034884139914359215975798397470111738433639102076952796435209264028021537229892074058188314207373272605636038651334696444286919565721890569881338463783989882911019234792486535699025646311275122274411175404155342249234136558802674731197305641190947858045969993105751983395792065828920796822805820210093174577065491814597082131393031622787491679856332477759009694178317375318368821390264654174039670932709831161255202873640489281967716308473047243229957004765412706536236472670869025902543540633101208028807552552098389091790435906088326534470239980054716807416750322521229220241568933467553431576752163460745670475952435493987314007198258850504885411059106007738740875539832452249589294006659624780916723181534511714197062648856491091688501221471717806381749888298525407248789423897932623271498241668092001196586363981364139438871535239207176214827065069539651733601100753810180878379274361295578405732661254466632895143727844665840866498240003655962932105277876459272466979831529282048840956209056998769042430627753436065929805338741393335042911200731019721288387249286505188391256813428739747714333379066876823883520130766201876860791210671538076160347755324700164074813292068568024238519482741252954199964042782225233360037022137076218722706203773213869098586993370170155683791146032975636525838513708976569134302322432642077565826389896215245438300187570310860480000533906713082013024652830860757006343956987254278284858371619486860324713636557288734182121660245924031628622394404845468842376014364491369333932732440011789862081204289182566535179044033371514444457023620546865608494829671941096306770681862607086197624365511249841742601689637943827647739753192488830108748993946646301337601457492499972685876684793341277398602275214653549915139511130070900252357536321474687124983694348062078037402632623766476692775678286881806982898247107838472527399024338405174424815001165897166650159739515463438185108038327958294258499979123263522591261654749484216293043245130713211428672161827666045403900761515335614916042818935205318832501058428630546098253028977703603252002538386142310863661394203801021650102355428530278355411821233551959475904697750988996697656852598884502119976493604708637198826791035572233637351986210864977795898608556238023618301984537915608930604362302527908670790232196653470383452730966437820907710683243209361014219861979941950841987346107743208561925389719631737184861993943843888754529081140961004120569137972767939179238123227568371028391438266058282117268996237434183830334056161593410007851958385930853757794469184653666509613683966762973275802915748207536233835944456492079672432074637652862475003545406240942715300755523944206787863863868182421896839656869884217377578751607363166640679526547616649957166113180795819300698729245904023050382738288763601955657437404388004070623572376563051583388185752588363242342948072258707770222618411368623353933153416998674556673828083953385859553887650200322341613752381777915208516249775540573681407970842264880494895043357543980075647268121681730910097533515842996052774514769117001511705236715668019747243088644998257802328991106887493129666979551568128160024931577019249231036351291752174562619839669581224559705587165708372744726224186073126971717311245980502449125273456503801187274837306224135490894291619763228475986831005594442019148473818854081438056466447549945298051927502134555522991323435490985690831389052274735020726873487488936336741311539022782075508436837487924255181698061213905084162235118210017590721240114251909624811608300914878701408771328813975283269700679765515272835500581808493660164914406678948764808907820590793942802060935667588289909747897748137923192813443141480658391350876193378672782928937239541344428644252704346833459652953893206406021977446066148428686466508087550385252943740960874819825685873233082410626669803645777952677637448050496360102884890873362567118473457647334943807551216752659414686723198905670826134278959453835743722477363868599024571425315726635962538691827224412670447061058393874398485976231917079164327494510859626266588302051504090008261830241447676880203477502787354055343155909715421429375559706133130062628561848592810462408089869178098913629053121350338706001334665817189902339046551719256269486698716494374181056432863341577867140583392107410719128329725480841263789204392440976393893147168046831929228725690454484457819357719649568902018996210157275940520779431450165038526154612104633755692499830669045602271953235366951774644612761172006231769432808233696581070645788729238857402139382484239571166108453915459654362102096518732505237161776583876207193384586878498200605001469543462091485286217093489852123877116301695514263030360771288829090506779042608299705238648514904644323593225819202326098687550889491884085512718311228273159016624975588461535331385403944334397175727312393731559924877557033314268586667576404657042621504624638607780996250155298180711760908316799169764459037945988617689968900369456126826878874149283922399651015788901381482653828757633905291968811496239411234225169841339242923224920997069592927984613452201769764034361265590100376142758102242622751137816624390201799073002914764480438293862303619444424411900873478825309592215448378122673841321459836000301987706900055719812275088409764751071712511442535378273186891677663024136055784679879071700250103941840442827882641509903924818054983813117941436780546475991140251422964511376459380443852419759687830723215798218632573151723785873786668931387512213704069753751304404757469294652741201772267969380591573730352006518268264387324760748171401960363123143642534623196505119663743478694232226992854384052020587978193751769297437110799401666654270086352480363252583084900758706469183711968216421628482651660307315276372014948429733174841247185477453980848109772474843390892942983417487561937787738211071008447243561370883755652297106343676574456572441499153044391296359081444755171879623563709723059551688149772138242004430113752660263595301467681684666765111293583112596306703249487247014559398847582739773923562193048979815510679889238537948008801349956448663808114950270788702178103140036903038677125953796297346185669646277919571450148386833367083965328745661813784675396536308123206255891676600557317868286970806528762125164098195448405530607155298182670078514292122809944389633521146848690175777654805756158929494558044691813620191444798686702502416738793016663859592145359839628493867351786428502743472570771842556696378878472341050391089226772333872594326009783260166152072708644780268603582214015792114037576904183214818892694863534846282524092493194220528298002349242488700100084240660739453383072745053167243114518692729966302221045624162785240731536939992864261703562670127208816099398026935794227709192951849703149047115596988121183064038969430213752390079811597488253736354183223115731539041783376124701639330021544747985885271784834839607317621722963550990654667932700528378860171449142719544032621794550522980007985794164463018892770934144461839455108854280165247825770088985804072882008966279297216038293653289676057511596687371673495287395608114205035151184670802174286673891799830707522027275731687638894711538425640185422616776596308786129781753251068811069644860389343200897476243854920541316146283393481744301776367207189490814060219073419415657802608088338315148976176160344214995925269677377836011427268405733942592393857163978388774692466472603273657739324678810087878647853020613664828824493174871401222712465054920359567267915297137560103994397010364062156242658159355701818701158670419430421561539793933721747077276577835553268786089595585704020376187707801620157668465506675415808792836465976733317453992349443769780601397893341502030028303188671864249117064284001630914762068848485387551204510364030708525634372360381675401963161254572822349974630401有19550位,用时5.6875秒(这个是利用快速傅里叶变换的程序的乘法结果,是两个9775位的整数的积,而那个模仿手工计算的程序显示内存溢出,无法计算和比较了,二者各有优缺点)
2021-03-30 22:08
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
可见,利用快速傅里叶变换的乘法计算太复杂,不节约时间,优点是不占用内存,可能利用快速数论变换的乘法好一点,可惜咱不会。
所以,准备采用模仿手工计算的乘法与分治法结合的办法试试。

谢谢各位老师,祝您晚安!
2021-03-30 22:16
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
刚学会个分治法程序,验证结果:25*25=625.
代码如下:
'这个程序修改了一下这回应该是对了,123*123=015129,超过4位的乘法就溢出了,由于里面补存了太多的0. 有空再重新考虑吧。
Private Sub Command1_Click()
Dim a, b
Dim ja(), jb()
a = Trim(Text1): b = Trim(Text2): a3 = a: b3 = b
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) \ 2: y = x + 2
sb = 2 * y
a = String(Val(sb - Len(a)), "0") & a
b = String(Val(sb - Len(b)), "0") & b
x = sb / 2
ReDim ja(1 To x): ReDim jb(1 To x)
For i = 1 To x
ja(i) = Mid(a, 2 * i - 1, 2)
jb(i) = Mid(b, 2 * i - 1, 2)
Next
For i1 = 1 To x
a1 = Mid(ja(i1), 1, 1): a2 = Mid(ja(i1), 2, 1)
For i2 = 1 To x
b1 = Mid(jb(i2), 1, 1): b2 = Mid(jb(i2), 2, 1)
c1 = Val(a1) * Val(b1): c2 = Val(a2) * Val(b2)
c3 = Val(a1) + Val(a2): c4 = Val(b1) + Val(b2)
c5 = Val(c3) * Val(c4)
d1 = Val(c5 - c1 - c2)
d2 = Val(c1 & "00") + Val(d1 & "0") + Val(c2)
d3 = Val(d3 & "00") + Val(d2)
Next
d4 = Val(d4 & "00") + Val(d3)
Next
Text3 = Mid(d4, Len(d4) - Len(a3) - Len(b3) + 1)
End Sub

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

End Sub


[此贴子已经被作者于2021-3-31 23:37编辑过]

2021-03-31 12:38
快速回复:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055930 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved