关于“擂台:分数化小数”,我专门写了一个快速程序(下载见内)

gxqcn 2007-06-02 09:26:14
加精
擂台:分数化小数 —— http://community.csdn.net/Expert/topic/5563/5563568.xml

由于前两天是工作日,程序一直没有调试好,昨晚终于完成了。但没想到已结贴了。


我专门写了一个程序,并嵌入了大量汇编代码,速度非常快(可能是当前最快的数倍),

这个软件的特色:输出有三种选择,
1、不存盘,仅测试——可测试内部仅计算出循环节所耗的时间;
2、连续输出至文件——即通常的输出格式,其中循环节前后各以“(”、“)”框定;
3、格式化输出至文件——将循环节从前至后每 100 个数字进行换行处理;

有兴趣者,请从下列两个站点之一下载(仅 13.6 KB):
http://hugecalc.ik8.com/Fraction.zip
http://www.freewebs.com/maths/Fraction.zip
...全文
637 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxqcn 2007-11-14
  • 打赏
  • 举报
回复
(为了与各位网友更好的沟通交流,我新申请了一个收费空间和顶级域名,欢迎大家访问)

中文名称:数学研发网

网址链接:http://www.emath.ac.cn/

Logo图片:

网站简介:学术性数学网站;知识与趣味相交融;提供原创数学工具软件。以等幂和、幻方等数学问题为主要研讨对象,站内有许多原创作品,部分尚为国内外研究的空白。本站集知识性、趣味性于一体;从中您将充分感受到“数学美”的魅力!

关 键 词:数学,研发,等幂和,幻方,数论,组合数学,趣味数学,软件 | mathematics,rd,magic square,software,HugeCalc

备 注:HugeCalc 是一款高精度算法库(同时支持 MBCS + UNICODE 版),适合于大规模科学计算,尤其适用于数论、密码学等领域研究,其核心算法耗费作者十余年的心血。具有占用资源少、效率高、使用便捷、易二次开发、可移植性强、可扩展性好等特点。关键文件 HugeCalc.dll 虽然很小,却提供了公共函数接口 709 个(标准C++接口 473 个;标准C接口 236 个),且其计算速度完全可与大型专业数学工具软件媲美!(在双核上测试,精确计算 40,000,000!,HugeCalc 比最新的 Mathematica V6.01 快了 58%!)
gxqcn 2007-08-19
  • 打赏
  • 举报
回复
好消息,HugeCalc V7.0.0.0 今天正式发布了!

本程序已一并打包进 HugeCalc,位于 ..\\HugeCalc\testDLL\bin\Fraction.exe 目录下,
相对之前的版本,它做了多线程处理,可以在计算中途退出。

以上帖子中的 ../download/Fraction.zip 不再提供,
请大家下载 HugeCalc 体验:http://www.freewebs.com/maths/software.htm#02
gxqcn 2007-06-12
  • 打赏
  • 举报
回复
由于原主力站点 http://maths.diy.myrice.com/ 因服务商原因现关闭了。
现又申请了一个,使镜像站点数保持在3个。

本程序现有三处可下载:
http://1.hao263.com/maths/download/Fraction.zip
http://hugecalc.ik8.com/download/Fraction.zip
http://www.freewebs.com/maths/download/Fraction.zip

最新版将分母上限又恢复为 2^32-1,
当取其间最大的素数 4294967291 时,将可得到的循环节长度为 4294967290(=2^32-6),
此时生成的文件将超过 4GB(程序中会自动提醒)。
ahjoe 2007-06-06
  • 打赏
  • 举报
回复
谢谢gxqcn! 我太惨了,毕业后就没看过数学书。我不适合研究这个问题了。
ahjoe 2007-06-05
  • 打赏
  • 举报
回复
有这样的速度,不得不佩服。

请教:
如何判断循环,要是把前面的位都记下来,那得占很多空间,这样内存不够,用磁盘交换的话速度又慢了。
gxqcn 2007-06-05
  • 打赏
  • 举报
回复
说到“擂台”,近期我也有一个帖子:

http://community.csdn.net/Expert/topic/5505/5505130.xml

现在回复次数已达 115 次,有兴趣者不妨关注一下。。。
gxqcn 2007-06-05
  • 打赏
  • 举报
回复
非常对不起,昨晚那版的文件指针定位存在bug,所写文件可能不正确,
现在已修正,并经过反复测试。新的测试结果如下:

1/100000007
①不存盘,仅测试 0.313456 s 100000006 (循环节长度)
②连续输出至文件 2.193748 s 95.3 MB (100,000,026 字节)
③格式化输出至文件 2.286618 s 99.1 MB (104,000,114 字节)

1/1000000007
①不存盘,仅测试 2.653000 s 1000000006 (循环节长度)
②连续输出至文件 36.674450 s 953 MB (1,000,000,027 字节)
③格式化输出至文件 37.505174 s 991 MB (1,040,000,114 字节)

测试环境:WinXP SP2 / AMD Athlon64 3200+ 2.01GHz / 1GB RAM / 硬盘剩余空间: 8.45 GB


感兴趣者,可从原地址下载更新:
http://hugecalc.ik8.com/download/Fraction.zip
http://www.freewebs.com/maths/download/Fraction.zip
medie2005 2007-06-05
  • 打赏
  • 举报
回复
十分感谢,

请到http://community.csdn.net/Expert/topic/5581/5581033.xml?temp=.6712305去领分。
gxqcn 2007-06-05
  • 打赏
  • 举报
回复
“如何判断循环”,也即循环节长度的计算问题,很简单:

计算 N/D 的循环节(这里讨论的前提是:D 与 N、及 D 与 10 互素),
可解同余方程:N*10^x ≡ N (mod D),又 (N, D)=1,
故 10^x ≡ 1 (mod D),解集中的最小正整数解 r 即为所求。

根据欧拉定理,10^φ(D) ≡ 1 (mod D),所以必有 r|φ(D),
将 φ(D) 分解质因数,而后将其所有约数逐一试探是否满足:10^r ≡ 1 (mod D),
满足上述方程的最小值 r 即为所求。

说了半天,其实用专业的术语一句话即可表达:
以 D 为分母的分数(D不被10整除),其循环节长度等于 D 关于 10 的“指数”。
northwolves 2007-06-04
  • 打赏
  • 举报
回复
郭老师真强人也。
gxqcn 2007-06-04
  • 打赏
  • 举报
回复
今天解了个bug:将分母上限设为4000000000,以防止计算文件大小时发生数据溢出错误。
同时,改进了文件存储算法,使速度有很大提高,测试结果如下:


1/100000007
①不存盘,仅测试 0.322891 s 100000006 (循环节长度)
②连续输出至文件 2.846381 s 95.3 MB (100,000,026 字节)
③格式化输出至文件 2.923377 s 99.1 MB (104,000,114 字节)


1/1000000007
①不存盘,仅测试 6.286661 s 1000000006 (循环节长度)
②连续输出至文件 29.156991 s 953 MB (1,000,000,027 字节)
③格式化输出至文件 30.106363 s 991 MB (1,040,000,114 字节)


测试环境:WinXP SP2 / Intel P4 2.93GHz / 512 MB / 硬盘剩余空间: 1.92 GB


感兴趣者,可从原地址下载更新(仅 13.4 KB):
http://hugecalc.ik8.com/download/Fraction.zip
http://www.freewebs.com/maths/download/Fraction.zip
gxqcn 2007-06-02
  • 打赏
  • 举报
回复
更正一下,下载链接应为(仅13.6 KB):
http://hugecalc.ik8.com/download/Fraction.zip
http://www.freewebs.com/maths/download/Fraction.zip

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧