ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 100的阶乘的结果的每位数之和等于多少?

100的阶乘的结果的每位数之和等于多少?

作者:绿色风 分类: 时间:2022-08-17 浏览:130
楼主
amulee
Q:100的阶乘的结果的每位数之和等于多少?
A:请参考一下代码:
  1. Sub MyFact()
  2.     Dim ArrJG, ArrTemp
  3.     Dim SumA As Double
  4.     Dim i&, j&
  5.     Dim DNumber '目标阶乘
  6.     DNumber = 100
  7.     '计算阶乘长度
  8.     SumA = 1
  9.     For i = 1 To DNumber
  10.         SumA = Log(i) / Log(10) + SumA
  11.     Next i
  12.     ReDim ArrJG(Int(SumA) - 1)
  13.     ReDim ArrTemp(UBound(ArrJG))
  14.     '初始化结果数组
  15.     ArrJG(0) = 1
  16.     '计算阶乘结果
  17.     For i = 2 To DNumber
  18.         For j = 0 To UBound(ArrJG)
  19.             ArrTemp(j) = ArrJG(j) * i
  20.         Next j
  21.         j = 0
  22.         Do While j <= UBound(ArrJG)
  23.             ArrJG(j) = ArrTemp(j) Mod 10
  24.             If ArrTemp(j) >= 10 Then ArrTemp(j + 1) = ArrTemp(j + 1) + ArrTemp(j) \ 10
  25.             j = j + 1
  26.         Loop
  27.     Next i
  28.     MsgBox WorksheetFunction.Sum(ArrJG)
  29. End Sub
2楼
amulee
利用该方法,可以求出大数的阶乘,只要数组定义的时候内存允许。
  1. Sub MyFact()
  2.     Dim ArrJG, ArrTemp
  3.     Dim SumA As Double
  4.     Dim i&, j&
  5.     Dim DNumber '目标阶乘
  6.     Dim strJG$  '结果输出
  7.     DNumber = 100   '要计算的阶乘
  8.     '计算阶乘长度
  9.     SumA = 1
  10.     For i = 1 To DNumber
  11.         SumA = Log(i) / Log(10) + SumA
  12.     Next i
  13.     ReDim ArrJG(Int(SumA) - 1)
  14.     ReDim ArrTemp(UBound(ArrJG))
  15.     '初始化结果数组
  16.     ArrJG(0) = 1
  17.     '计算阶乘结果
  18.     For i = 2 To DNumber
  19.         For j = 0 To UBound(ArrJG)
  20.             ArrTemp(j) = ArrJG(j) * i
  21.         Next j
  22.         j = 0
  23.         Do While j <= UBound(ArrJG)
  24.             ArrJG(j) = ArrTemp(j) Mod 10
  25.             If ArrTemp(j) >= 10 Then ArrTemp(j + 1) = ArrTemp(j + 1) + ArrTemp(j) \ 10
  26.             j = j + 1
  27.         Loop
  28.     Next i
  29.     '结果输出
  30.     For i = UBound(ArrJG) To 0 Step -1
  31.         strJG = strJG & ArrJG(i)
  32.     Next i
  33.     MsgBox DNumber & "的阶乘为:" & strJG
  34. End Sub

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap