计算大数阶乘--VB Script 版
和Basic版相比,这个版本有以下几处不同点
这次采用的不是静态数组,而是动态数组,先定义一个数组“Dim buff()”,在运行过程中再根据需要扩展大小。
计算结果没有直接输出,而是写到文件,因为当字符串太长时,MsgBox的会丢失部分内容
难点:确定n!的位数是难点,ln(n!) 可用 斯特林逼近 来计算,ln(n!)= (n+0.5)ln(n)- n + 0.5*ln(2*pi)
请参考 http://mathworld.wolfram.com/StirlingsApproximation.html
下面为源代码
Dim n,i,j,c,t,len1
Dim buff()
Dim numstr
Const RAD=10000
Const PI=3.1415926535897932384626433832795
numstr= InputBox( "please input a numer n(n>1)", "calculate the n!", 1)
if numstr > "" and IsNumeric( numstr ) Then
n=CLng(numstr)
log_facn=(n+0.5)*Log(n)-n+0.5*Log(2*PI) 'log_facn=ln(n!)
ReDim buff(log_facn/Log(RAD)+1) 'Expand array size for store n!
buff(1)=1
len1=1
For i=1 to n
c=CLng(0)
For j= 1 to len1
t=CLng(buff(j))* CLng(i)+c
buff(j)=t MOD RAD
c=t \ RAD
Next
If c>0 Then
len1=len1+1
buff(len1)=c
End If
Next
'Caculation is completed, the following code for write the result to file
filename=".\" & CStr(n) & ".txt"
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(filename, True)
numstr=CStr(buff(len1))
For j=len1-1 to 1 step -1
t=CStr(buff(j))
If Len(t)<4 Then
numstr=numstr & String(4-Len(t),"0")
End If
numstr=numstr & t
If Len(numstr) > 76 Then
a.WriteLine(numstr)
numstr=""
End if
Next
If (Len(numstr)>0) Then
a.WriteLine(numstr)
End If
a.close
MsgBox "Result have been stored to file " & filename,0,"calculate n!"
Else
MsgBox "Invalid input"
End if
参考学习资料
1. VBScript 教程,可从VBScript http://download.pchome.net/development/reference/detail-11108.html
2. VB script 脚本语言.doc
计算大数阶乘--VB Script 版相关推荐
- 精度计算——大数阶乘
精度计算--大数阶乘 摘自一个 ACM函数模板 ,学习记录自己的理解(^U^)ノ~YO 语法:int result=factorial(int n) 参数:n: n的阶乘 返回值:阶乘的结果 注意: ...
- c语言22阶乘太大,C语言计算大数阶乘的方法
C语言计算大数阶乘的方法,整数,数组,阶乘,本文,格式 C语言计算大数阶乘的方法 易采站长站,站长之家为您整理了C语言计算大数阶乘的方法的相关内容. 本文实例为大家分享了C语言计算大数阶乘的具体代码, ...
- C语言之计算大数阶乘,如计算100!和1000!等~~~
一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且定义0的阶乘为1.自然数n的阶乘写作n!.即n!=1×2×3×-×n.阶乘亦可以递归方式定义:0!=1,n!=(n-1 ...
- 大数阶乘算法c语言程序,c/c++开发分享C语言计算大数阶乘的方法
c/c++开发分享 问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组a来表示一个 ...
- c语言大整数阶乘计算器,大数阶乘_yuanmercu_oxxdl_新浪博客
菜鸟篇 程序1,一个最直接的计算阶乘的程序 #include "stdio.h" #include "stdlib.h" int main(int argc, ...
- C#阶乘类,可以精确计算大数的阶乘,10000的阶乘只要1.3秒左右
关于阶乘,老郭和宝宝等前辈做了大量研究,计算速度也达到了非常快的水准.本文宗旨不在于和他们比快,因为他们专门为阶乘做了很多优化.本文介绍的是使用C#直接计算的方法,速度虽然不能跟他们相比,但在一般场合 ...
- 阶乘类,可以精确计算大数的阶乘,10000的阶乘只要1.3秒左右
关于阶乘,老郭和宝宝等前辈做了大量研究,计算速度也达到了非常快的水准.本文宗旨不在于和他们比快,因为他们专门为阶乘做了很多优化.本文介绍的是使用C#直接计算的方法,速度虽然不能跟他们相比,但在一般场合 ...
- 阶乘计算之大数阶乘与快速取模阶乘计算
大数阶乘的常规运算 即数学的模拟运算.一位一位的乘,有进位就进位. #include <bits/stdc++.h> #define _xx ios_base::sync_with_std ...
- NYOJ 28 大数阶乘
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0& ...
- NYOJ 27 大数阶乘
大数阶乘 时间限制:3000ms | 内存限制:65535KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0< ...
最新文章
- 【python】排序算法的稳定性冒泡排序(画图详细讲解)
- 用python玩转数据第四周答案_大学慕课用Python玩转数据答案公众号
- 微信支付,redirect_uri域名与后台配置不一致,错误代码10003
- bat转exe工具 Bat To Exe Converter v2.4.7 绿色版
- 12. 我的第一个容器化应用
- android 同步list数据,android SharedPreferences保存list数据
- java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片
- Vue-动态绑定属性
- 16行代码实现微信聊天机器人,自动智能回复,打团了让它来陪老婆聊天
- NORDIC nRF52840 输入引脚初始化及中断操作
- GIMP为证件照更换背景颜色
- userdel: user xxx is currently used by process xxx
- html div旋转45度,CSS动画 - 在每次悬停时进一步旋转45度
- 腾讯2017秋招笔试编程题--游戏任务标记
- python学习-循环替换txt文件中的指定字符
- 李宏毅2021机器学习笔记——Regression
- Zemax操作21--双折射
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(7)- 从SD/eMMC启动
- html5手机排名,手机网站排名怎么做?移动端手机站SEO排名的13个要点
- 随机生成6位随机数(字母+数字)