| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 31003 人关注过本帖
标题:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
明白了,人家的乘法还调用了加法,我的不调用加法,乘法没有我的快,加法比我的快。同样的数据我的加法需要3秒,人家的是不到1秒:2444位加2444位,用时6.30000000019777E-02秒
2020-02-27 11:10
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
就比傅里叶的,其他的不用比,有傅里叶的拿出来比比看。暂时用4千*8位的,4千*4千的尚未动手,若4千*8位的比不过傅里叶就不费心去设计了,目前只是尝试实现了思路,我说过会尝试的。
2020-02-27 11:16
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 162楼 xianfajushi
不会傅里叶变换,继续学习,没法比了,编不了程序。谢谢您!等十几天至少,才可能弄出来。
2020-02-27 11:30
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
复制了一个迭代型:https://blog.
使用4千*8位
图片附件: 游客没有浏览图片的权限,请 登录注册
2020-02-27 13:22
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
傅里叶比较快,因此,没兴趣再去设计了。4千*4千
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2020-2-27 13:50编辑过]

2020-02-27 13:22
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 165楼 xianfajushi
您好!你的程序速度很快了,不懂vc学不了,你的原理是啥?vb可能不支持,我研究学习傅立叶变换的乘法除法程序。
2020-02-27 14:21
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
分段多位数乘法4千乘以4千与4千乘以8位的原则是一样的,从左到右相乘,最高位相乘后,往后位的进位与前位相加。不想再设计了,这里只做描述和一个8位相乘的代码例子记录,估计的虽说堪舆傅里叶变换快速乘法媲美,还是觉得稍逊一点。同样的道理可用加法、减法、除法,其重点就是对进位用加法进行处理,而一次可以处理多位,受数据类型位数的限制,只能取其位数的一半-1位作为乘法,加法、减法、除法则可达18位推理的位数。
从低位往高位算也是一样的原则,有一点区别就是要让进位暂存,等运算完成后再用加法计算进位。从程序写作来说,从高位往低位进行运算写程序比较方便。
说白了就是传统的算法把多位数当作1位数看待即可,原来的模拟传统算法程序稍加修改就可以了,不过还是要注意对0的处理。

[此贴子已经被作者于2020-2-27 16:12编辑过]

2020-02-27 14:36
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
这种方法占内存,以前做的是4位一个数组,速度提高不明显,但是到不了1万位就会显示内存溢出了。

[此贴子已经被作者于2020-2-28 12:42编辑过]

2020-02-28 09:06
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
经过对你的加解密函数qksmimo部分改进,判断速度已经提升至7秒以内,估计如果我完全用vb写那个快速积模和快速密模函数,应该可做到一秒内完成50至100位的判断。我记得我当时用c做的,素数都在150位以上,加解密汉字超过50个(相当于英文字符100个,不像你才用个“123”做明文),都是瞬间完成的,尽管vb没有速度优势,但也不至于慢许多。

发现后来你们的讨论都是在变态的1万位以上的乘法运算,用vb就毫无价值了,即使用当今最快的算法,大概也比不上c的传统算法。在传统竖式乘法算法中vb最多可以使用到7位数,相当于一千万进制,除法最多用8位(一亿进制),加减法可用到9位,这些都要定义long型数组;用纯粹的16进制计算则只能定义byte数组,属256进制,只有byte类型是无符号的。这些算法肯定比一个个的字符十进制运算快。

图片附件: 游客没有浏览图片的权限,请 登录注册

能编个毛线衣吗?
2020-02-28 16:20
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
C++写个DLL文件供VB调用算了,是很快又不错的方案.
2020-02-28 17:00
快速回复:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
数据加载中...
 
   



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

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