数学研发论坛

 找回密码
 欢迎注册
查看: 2872|回复: 9

[讨论] 用VBA计算100000!

[复制链接]
发表于 2020-9-27 09:51:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?欢迎注册

x
为什么我用VBA写的计算阶乘的程序很慢?计算100000!需要大约400秒,这正常吗,对于VB类程序?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-9-27 11:38:29 | 显示全部楼层
比我牛逼多了,我只会用软件
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-9-27 22:29:03 | 显示全部楼层
能贴一下程序吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-10-1 20:33:05 | 显示全部楼层
现在Basic很少用了,我这有个十几年前的,可以参考

BigInt.bas

25.25 KB, 下载次数: 1, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2020-10-2 07:41:57 | 显示全部楼层
111.jpg
计算100000阶乘有错误,计算10000阶乘需要10秒。跟我编的计算器的性能差不多。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-10-2 22:42:46 | 显示全部楼层
大数阶乘的计算(六)

十六年前我也曾写过VB系列的大数阶乘计算,供参考。

当时CSDN算法版已经在讨论如何1秒钟计算一亿或10亿的阶乘了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-10-2 22:51:18 | 显示全部楼层
楼主可以研究一下郭老师16年前的算法 ,当时的配置HugeCalc计算100000!的阶乘需要0.07秒

高精度快速阶乘算法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2020-10-3 07:36:51 | 显示全部楼层
本帖最后由 ShuXueZhenMiHu 于 2020-10-3 07:37 编辑

333.jpg
用Excel中的VBA做的。没有采用特殊的算法,就是硬乘。这已经是我VB编程能力的极限了。末尾的零们没有参与运算。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-10-3 11:37:54 | 显示全部楼层
预估位数
long型数组存储
可以每8位一组
分解因数优化运算,尽可能多的平方运算
预存一些小数字的阶乘结果
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-10-3 11:54:54 | 显示全部楼层
ShuXueZhenMiHu 发表于 2020-10-3 07:36
用Excel中的VBA做的。没有采用特殊的算法,就是硬乘。这已经是我VB编程能力的极限了。末尾的零们没有参与 ...

参考一下 mathematica的结果
{10!,      1.92435*10^-6 秒 }
{100!,     6.09377*10^-6 秒 }
{1000!,    8.98029*10^-6 秒 }
{10000!,   0.000389039   秒 }
{100000!,  0.0101275     秒 }
{1000000!, 0.204683      秒 }
{10000000!,3.89173       秒 }
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2022-5-20 08:08 , Processed in 0.094225 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表