标题:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
只看楼主
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
那么有知道2^p-1是2p+1多少倍数的推算规律或公式?
W10每200万增加1小时,如400万到600万历时3小时600万到800万历时4小时依此类推,那么预计10点可能算出1000万,16点可能算出1200万,23点可能算出1400万,能大概推算出各需要多少历时?到最后可能需要47小时计算200万。
因此我想修改程序再节省一半左右时间。
果如预想的一样优化修改程序后运算历时减少一半不止,运算200万只用了2小时,原来需要6小时,可以这样总结,本次设计的加法减法二次方乘法都采用了最快速代码进行优化,最大限度提高运算速度,也不耽误在电脑上做其他事情开其他程序,由此可知精炼的代码是提高效率减少耗时很重要因素。
同时也完成了接续运算功能,读取前面保存的数据文本文件转到数组,从而不再担忧时间问题,随时随地可以使用接续运算,而且我也会把已经运算好了的数据保存这里,供需要的人免费使用,文本第一行是数组序号。
二次方数据12000000.txt (3.81 MB)
二次方数据14000000.txt (4.44 MB)
二次方数据22000000.zip (3.08 MB)

附件不能超过5兆,那就没办法了。

[此贴子已经被作者于2022-2-27 07:21编辑过]

2022-02-26 06:31
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
回复 371楼 xianfajushi
谢谢您!期待优化程序后的结果!
您这个已经是非常好的程序,可能是天花板级别的,普通电脑的最佳发挥!
2022-02-27 10:00
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
有比我这个更好的程序别吝啬,一定要介绍给我观摩,乖巧的话你倒是会说,只是没列出什么证据。
眼看这一点点接近目标的确可期,能肯定的是年内,可确定的是月内,可期的是周左右,从周五晚上算起接近2天时间已经运算到2600-1万次方数据8兆多数组用了434823。
二次方数据26000000.zip (3.64 MB)
二次方数据30000000.zip (4.2 MB)
二次方数据34000000.7z (4.35 MB)
二次方数据36000000.7z (4.58 MB)
二次方数据37000000.7z (4.82 MB)
二次方数据40000000-1.zip (2.87 MB)
二次方数据40000000-2.zip (2.74 MB)

我决定只有晚上睡觉后运行程序,因此,周内就别想了,因为现在已经鼠标卡了,我还要做其他事情。


[此贴子已经被作者于2022-3-2 06:42编辑过]

2022-02-27 12:58
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
回复 373楼 xianfajushi
感谢您的回复和沟通指导!感谢您的验证,我没有更好的程序,毫无进展,惭愧的很!
2022-02-27 14:11
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:0 
为什么要证明这个是否为梅森素数?如果我证明是梅森素数会怎样?用我这个思路设计的程序就和我有关联.
已经运算好的数据约有742542*18=13365765,已经是超过千万位数字了.
楼下有秒完成的,望尘莫及,不过对此帖也提供一个较快运行的算法思路和荔枝.

[此贴子已经被作者于2022-3-3 11:21编辑过]

2022-03-02 13:12
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
回复 375楼 xianfajushi
如果2^99368963-1不能被198737927整除,就基本上可以断定是个素数。
如果你证明了这是个素数,那就是新的世界纪录,你就破纪录了,将获得10万美元的奖励。

仅仅是可能,因为最大的几个梅森素数都是美国人发现的,可疑!都是通过网上的搜索计划的程序找到的,程序是国际共享的分布程序,自愿参加的,为啥每次都是美国人弄出来的?估计美国人在程序上做手脚了可能是!!

[此贴子已经被作者于2022-3-3 10:05编辑过]

2022-03-03 10:03
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
回复 376楼 ysr2857
这...什么时候家用电脑要干超级电脑的事了?
如果不需要转换为十进制显示,验证(2^99368963-1)%198737927是否为0,应该是很快的。2^n是个很适合计算机处理的数,只要计算机能申请到足够的空间,得到2^n的结果应该都能在十秒内完成吧,但要显示出十进制结果可能花费的时间比较长。
2^99368963-1十六进制数为:03 ff ff...ff(12421120个ff),需要12M的内存空间

能编个毛线衣吗?
2022-03-03 10:54
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
回复 377楼 wmf2014
谢谢关注和回复!谢谢指导!
由于除数198737927很小,所以,余数也很小,我们只要个余数就行,看看余数是否为0?

至于速度大小和中间数据的容量普通电脑是否可行就不知道了,速度越快越好,如果速度够快1秒内就能完成多步超大整数的除法的话,那利用卢卡斯莱莫法测定2^99368963-1是否是素数肯定最保险,最确定了。

谢谢您!新年快乐万事如意!!
2022-03-03 14:52
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
我们知道,梅森素数的判定用到卢卡斯莱默法,即递推数列:
S0=4,SN=S(N-1)^2-2,(程序可以这样写:S=4,S=S^2-2)每项MOD梅森数MP,若P-1项中有一项余数为0,则MP为素数,数列的数据增长太快,一般的是用前一项的余数的平方再-2来做为后一项来判断,这个可以证明是成立的。就是通项为S=(S MOD  MP )^2-2,再判断S MOD  MP 是否为0.

一般都是第p-1项的余数为0,所以最高项就是p-1,就是一般的要算p-1次除法而且是超大整数的除法。
2022-03-03 15:23
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
例:M89=2^89-1=618970019642690137449562111,素性测试结果如下:
这是个素数
4(1)
14(2)
194(3)
37634(4)
1416317954(5)
2005956546822746114(6)
598028640278675810224740676(7)
480114390397887436345871973(8)
256286478379806120980640370(9)
503856043838036255396725647(10)
511097357768708595775143636(11)
168909432968702305299180947(12)
606396047570974655444193748(13)
384259961875522880452984663(14)
400988785643977730394319793(15)
451946598706049129545781082(16)
519056096255902175211532475(17)
121085530627461043345077875(18)
71186560963388750687096830(19)
36000517785442762303479300(20)
523566428507141573725342798(21)
424152844029608571078391252(22)
451425083283677785701240528(23)
471604984152655775544654653(24)
149504332299367259583502770(25)
2661688372237296008669225(26)
14651690105229857026329789(27)
118366775657027743761992789(28)
78447114542527441733697497(29)
414825479001522844830957808(30)
140234396746501638380162556(31)
524724811145776165191705380(32)
454239684978083396425387798(33)
443190129321733552688414291(34)
193246662398964773806577169(35)
90276720159245463714588945(36)
325532186394213993941115709(37)
184428441183694588040637933(38)
20227257621080411005543513(39)
492178310326013754654519350(40)
98383234722633752804518339(41)
422539297718609229503207527(42)
239699647065516513819077229(43)
451540821309242236737612159(44)
386616582127510358048893037(45)
111015693969297793247714068(46)
526524283201479916042588129(47)
64862389039487459674212268(48)
222734658450663017797297098(49)
527979459006852476995019463(50)
597546382855243971575029724(51)
432108610907467792010713113(52)
267528776084781116062417378(53)
539136831481300028111816217(54)
451247597566784449829767505(55)
437168526145243171726687748(56)
598500912756632689317072800(57)
524692914241987400050525363(58)
332189870719179258780519572(59)
412661427218334854756142421(60)
321992305401224654215082066(61)
435970785565830723987708026(62)
381742226819095467298228805(63)
170103210134157444573479299(64)
529650761375006727395831727(65)
588636842041150882786657416(66)
532115895320758084925029926(67)
501541201809618824302560067(68)
339657887315362077441027847(69)
99498791857820493810407653(70)
267353229805674813483082782(71)
153775828163901691352640258(72)
645734370591155030147282(73)
239072406272077525999142496(74)
386211355975098724888629576(75)
589820547708179745896185533(76)
426471425099610829450724237(77)
14792991384462166970694984(78)
574596879853011245099388238(79)
269783273665984523074966550(80)
98263195276941167273641778(81)
288575740080467405879843347(82)
592120439037291200756916902(83)
248352176262993969312953851(84)
496815502059771466001738628(85)
309566686160249986820679689(86)
618970019642654953077473279(87)
0(88)

第88项为0所以是素数,即2^89-1是素数.

[此贴子已经被作者于2022-3-3 15:29编辑过]

2022-03-03 15:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499181-1-1.html




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

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