HugeCalc 是什么?
HugeCalc 是一款高精度算法库(同时支持 MBCS + UNICODE 版),适合于大规模科学计算,尤其适用于数论、密码学等领域研究,其核心算法耗费作者十余年的心血。具有占用资源少、效率高、使用便捷、易二次开发、可移植性强、可扩展性好等特点。关键文件 HugeCalc.dll 虽然很小,却提供了公共函数接口 709 个(标准C++接口 473 个;标准C接口 236 个),且其计算速度完全可与大型专业数学工具软件媲美!
现已提供了如下功能:
强大的 HugeCalc
HugeCalc 是一款持续发展的软件,它具有如下特点:
快速计算阶乘非零尾数
这纯粹是一个数论小游戏:阶乘的十进制结果中末尾都会有很多个数字 0 (5以下的除外),去掉这些连续的 0 之后最后若干位称为“阶乘非零尾数”。给出一个数 N(它可能非常非常大,大到上千万位),请迅速计算出它的阶乘 N! 的最后的指定位的非零尾数。我编写了一个小程序,界面如下:
--- 图3
曾有许多竞赛题是让选手编写程序快速计算阶乘的最后一位非零尾数,而本程序则可快速计算最后的 1~255 位非零尾数,功能很强大,速度亦是无与伦比,这些的背后则是算法库 HugeCalc 的强力支持!为了让广大网友体验快速计算的乐趣,无论注册 HugeCalc 与否,本程序的运行都无任何限制!
关于本话题的深入探讨,可访问本站的擂台:计算阶乘的 18 位非零尾数
最直观的 RSA 算法教程(含源代码及程序)
为什么说是“最直观的 RSA 算法教程(含源代码及程序)”呢?请看如下界面:
--- 图4
它将 RSA 的原理以数学公式的形式直接反映在界面上,所有的项都可由用户编辑,而在使用时,还会自动判定状态,自动给予提示。更重要的是,还提供了源代码,RSA 被精心设计成两个版本:标准C调用(rsa.h & rsa.c)及标准C++调用(rsa.hpp & rsa.cpp)。
我虽然开发了 HugeCalc,并深信其在密码学领域大有作为,可是我本身之前对密码学却一无所知,于是拼命搜集资料自学。也许我的数论功底还可以,所以学 RSA 还比较轻松。但发现极少程序可以直观地反映其算法的流程,这才决定自己全新开发这款程序,并共享源代码(特别地,无论注册 HugeCalc 与否,RSATool.exe 的运行都无任何限制!)。
1s 内可破世界纪录的“自守数程序”
“自守数”,通俗地讲,就是能出现在自己平方“尾巴”的数。加拿大两位数学工作者利用电子计算机, 算出了 500 位的自守数, 这是当今所公认的“世界纪录”。
--- 图5
这个程序的核心算法源于 HugeCalc,可以独立运行;在我的机器(AMD 3200+,2.01 GHz,1GB RAM,WinXP SP2)上 1s 钟可计算到 2,000,000 位!
如果您对算法感兴趣,请浏览 求解b进制的n位自守数。
可快速精确计算千万级阶乘的小程序
精确计算阶乘,可以从侧面反映一个算法库的效率,至少是大数乘法方面的。
--- 图6
上面的截图是在我的机器(AMD Dual Core 4800+,2.51 GHz,2GB RAM,WinXP SP2)上截取的,看到么,那可是精确计算四千万的阶乘!其实,更大的也不再话下,比如上面曾提到的5千万的阶乘。(参见:测试报告)
如果您对算法感兴趣,请浏览 高精度快速阶乘算法。
因为我家有台“老爷机”配置非常烂,内存只有 64MB,每次新版本发布之前,我都要先在这台机器上测试一遍(以保证在用户低配置的机器上仍可运行顺畅),所以不得不非常吝啬地使用内存。HugeCalc 的开发理念中非常注重资源的有效利用,所以整个运行期间内存占用都很低。也许有人会说,现在内存便宜了,不必要太在意了,但我必需再提醒一句:在 32bits OS 下,用户的可用寻址空间是有限的(2GB左右),再多的内存也是惘然,超出寻址空间程序一样是会崩掉的!这是高精度计算最不情愿看到的现象。也许又有人会说,Vista 诞生了,寻址空间的瓶颈可以解决了,但我认为无论何时,合理而充分地发挥用户的资源,是开发者应具有的好品质。
方便快捷的素数生成器
许多数论爱好者,对“素数”总是情有独衷。
--- 图7
这个程序有不少独到之处:
分数转小数快速计算器
--- 图8
这个程序调用了算法库 HugeCalc 中的几个数论函数,功能虽然单一,但转换速度极快(因采用了多线程控制,可随时终止运算)。
专业的等幂和计算器
从下面截图显示的版本年号可看出,这是本人的早期作品。
--- 图9
它是用 VB 开发的,具有豪华的界面(甚至是度身定制自定义控件)、数以百项的快捷功能,可以从网页、Excel 表中智能提取数组,非常实用,被幻方协会推荐使用。
这是我当初自学 VB 时完成的,但我的工作需要我用 C 语言,所以当时决定终止对其的进一步开发,转而用 C/C++ 开发大数高精度算法库,不想一发而不可收!可以说,“PowCalc”是“HugeCalc”的前身,它完全是我自创的算法,为后来的开发奠定了基础。虽为 VB 开发,但却并不逊色于普通 C 程序员开发的程序,当初在网站截图上不知天高地厚地加了句“PowCalc - (可能是当前最快的)全精度计算器。”,现在您可以当是个笑话一笑而过罢了!:)
这个程序有许多独特功能,速度也非常快,我至今仍经常使用它,所以也特别将它打包进了 HugeCalc 中,免费共享给大家(如果因缺少运行库无法运行,请下载其完全安装版)。
美妙的幻方(世界纪录,首创)
在我的业余爱好中,幻方也曾占有一席之地。
--- 图10
我用自创的算法打破了多项“世界纪录”,其中不少还属于“世界首创”。“幻方”虽然体现了极佳的“数学美”,但应用领域却始终有待进一步开拓,处境比较尴尬,所以一些级别较高的刊物对幻方类作品比较抵制(我曾帮一网友在上海交大学报上发表一篇论文,最后甚至需徐利治数学家的亲笔推荐信才得以发表)。我虽已系列整理了大量的文稿,并开发出了系列配套软件,但鉴于当前的形式,毅然决定从“幻方”研究中抽身出来,转投新的领域。促使我做这个决定的,还有一个原因:“幻方”太易引发版权之争。因为对一个幻方改头换面实在是小菜一碟,是个是非之地。上述幻方是我 2003-06-13 发布的一个特别“单行本”,它可以迅速构造出大量的“高级 729 阶 5 次雪花幻方”。
在压缩包中,还有一个“25 阶立体二次雪花幻方”,高维高次幻方,世界首创,请欣赏(更多的。。。)