| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 31790 人关注过本帖
标题:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 170楼 xianfajushi
非常感谢!DLL是啥?可调用函数?只要速度快,计算位数多,可以试试!您幸苦了,谢谢!
2020-02-29 02:36
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
写个C++的傅里叶快速大数乘法DLL文件,引入到工程中,就像使用函数一样调用。
只看到傅里叶大数乘法,没看到除法。大数乘法傅里叶快速变换随便抄一个即可编译成DLL文件,不过得先学会使用DLL文件在VB工程中。
2020-02-29 07:10
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
有vc版的大数乘法不知道怎么用vb调用?有vc版大数除法不知道是否是利用了傅立叶变换的不知道是否是快速的?
2020-02-29 10:15
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
可以这样说,分段多位乘法速度不慢,比起使用数组处理一位数有绝对优势,不过对数值前面的0需要额外处理,我已经构思了一种处理办法就是加1个标记指明分段的前面有几个0,运行的时候要做判断,属于运算外的额外处理。
2020-02-29 13:41
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 174楼 xianfajushi
额,谢谢您!可能vb不支持这种处理方法吧!
2020-02-29 15:09
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
知道引用的这个博客傅里叶变换大数乘法使用了多少数组?且其位数也是有限的。
#define N 150010
const double pi = 3.141592653;
char s1[N>>1], s2[N>>1];
double rea[N], ina[N], reb[N], inb[N];
int ans[N>>1];
以下是引用xianfajushi在2020-2-27 13:22:47的发言:
复制了一个迭代型:https://blog.
使用4千*8位



[此贴子已经被作者于2020-3-1 08:33编辑过]

2020-02-29 16:26
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
各位老师辛苦了,可以暂时放一放,有空再弄!
2020-03-01 11:10
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 170楼 xianfajushi
感谢您的指导!明文越短越好,因为公开模数是我们要判断的数,必须比明文长否则原理失效,用一位的数字也可以,但0和1不能用,即使用1位的数字如3,所要判断的数也必须是3位或5位以上的,小了同样会失效。公开模数必须和密文是一一对应,否则就失效,密文的长度是由公开模数决定的,公开模数长度越大,密文长度越大,原理就不会失效。(是个人的理解,供参考,如用3为明文,对两位的数字就有个别判断错误输出结果错误的,两位数的素数很少那个是素数人工容易判断和记忆的,有没有错误很容易验证的。更大的不容易验证,3位以上没有发现错误但感觉是怕有错误,所以采用了3位的明文,理论上1位的也应该能用但保险起见还是用3位的,除了123还很多,都可以但不要用100或111这样的尽量。)
2020-03-02 11:56
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 178楼 ysr2857
在此例子中,明文采用3,100,111,结果都一样,时间也差别不大,如当明文采用3时,结果为:这是素数有54位,用时16.004999999999秒。
2020-03-02 16:21
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 179楼 ysr2857
楼主还在孜孜以求。我就再跟一贴。
通过完全自己写的快速幂模和快速积模vb代码,判断54位素数速度提升至0.093秒,感觉还有提升空间。
不过,我还是怀疑楼主的这种测试大素数的方法,尽管我测试了很多仍然符合。百度了下,怀疑楼主使用了费马小定理的逆,检测到的是伪素数,伪素数太少了,10亿内只有5597个,所以我很难找到反例。

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

能编个毛线衣吗?
2020-03-02 18:46
快速回复:各位老师好!求助编辑一个大整数的快速乘除法可调用程序
数据加载中...
 
   



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

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