| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 31047 人关注过本帖
标题:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
取消只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 371楼 xianfajushi
谢谢您!期待优化程序后的结果!
您这个已经是非常好的程序,可能是天花板级别的,普通电脑的最佳发挥!
2022-02-27 10:00
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 373楼 xianfajushi
感谢您的回复和沟通指导!感谢您的验证,我没有更好的程序,毫无进展,惭愧的很!
2022-02-27 14:11
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 375楼 xianfajushi
如果2^99368963-1不能被198737927整除,就基本上可以断定是个素数。
如果你证明了这是个素数,那就是新的世界纪录,你就破纪录了,将获得10万美元的奖励。

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

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

2022-03-03 10:03
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 377楼 wmf2014
谢谢关注和回复!谢谢指导!
由于除数198737927很小,所以,余数也很小,我们只要个余数就行,看看余数是否为0?

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

谢谢您!新年快乐万事如意!!
2022-03-03 14:52
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册: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
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 381楼 xianfajushi
谢谢您!很好!我也不知道哪里错了,如果是用的卢卡斯莱墨法判定,应该是第p-1项余数为0,您的好像是前面有两项余数为0了,咋回事呢?
我是要求算一下2^99368963-1除以198737927余数是否为0?这个仅仅一步除法,比卢卡斯莱墨法计算量小的多。

谢谢您!您的方法效率高啊!如果结果可靠,且余数不为0,就基本可以断定2^99368963-1是素数,那你发表出来就可能会得到10万美元奖励!
那就是了不起的成果,意义重大!

期待您的结果!非常期待,祝愿您早日取得成果!
2022-03-17 09:42
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 381楼 xianfajushi
用卢卡斯莱墨法来判断2^82589933-1前7项的余数应该是:
4(1)
14(2)
194(3)
37634(4)
1416317954(5)
2005956546822746114(6)
4023861667741036022825635656102100994(7)
不会有余数为0的情况的,直到被除数大于等于除数2^82589933-1为止都不会余数为0的。

注意:每一项都是前一项的余数的平方,减去2,再除以2^82589933-1的与余数,比如2005956546822746114^2=4023861667741036022825635656102100996,再减去2得到4023861667741036022825635656102100994,余数仍然是4023861667741036022825635656102100994.

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

2022-03-17 10:06
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 384楼 xianfajushi
若程序靠谱,如果您算的2^99368963-1除以198737927余数不为0(仅仅用于这一个类型)就基本可以确定了,不能再用其他质数求余是否为0了,可以用卢卡斯莱墨法最后确定。

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

2022-03-17 10:31
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 386楼 xianfajushi
不是,这是一种对付特殊类型素数的素性判断的简便方法,与你的程序是否正确没有关系,如果你的程序判断余数不为0而用其他程序判断余数为0,那才能证明这两个程序有一个不对,跟是否用其他素数判断是否为0没有关系,不是一回事。

没人笑话你,您的程序速度够快,效率很高,非常欣赏!可惜不懂vc语言,没法学习!谢谢您,非常感谢!让我看到了希望,我们都继续努力!
2022-03-17 10:59
快速回复:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
数据加载中...
 
   



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

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