我说过方法了,其实:很简单,用一个数组,存储每一位,然后累加,例如dim a(10) as integer
dim b(10) as integera(0)=1
a(1)=2
a(2)=3
a(3)=4
b(0)=4
b(1)=3
b(2)=2
b(3)=1a表示1234
b表示4321a+b=c那么
c(0)=5
c(1)=5
c(2)=5
c(3)=5

解决方案 »

  1.   

    Private Function Factorial(intC As Integer) As String
    On Error GoTo myErr:
        Dim intA() As Integer, intT() As Integer, i As Integer
        Dim j As Integer, intR As Integer
        ReDim intA(20), intT(20)
        If intC < 2 Then Exit Function
        intR = 20
        intA(0) = 1
        For i = 2 To intC
            For j = 0 To intR
                intT(j) = intA(j) * i
            Next j
            j = 0
            Do Until j > intR
                intA(j) = intT(j) Mod 10
                If intT(j) >= 10 Then intT(j + 1) = intT(j + 1) + intT(j) \ 10
                j = j + 1
            Loop
        Next i
        
        Do While True
            j = j - 1
            If intA(j) > 0 Then Exit Do
        Loop
        
        For j = j To 0 Step -1
            Factorial = Factorial & intA(j)
        Next j
        Exit Function
    myErr:
        If Err.Number = 9 Then
            intR = intR + 20
            ReDim Preserve intA(intR)
            ReDim Preserve intT(intR)
            Resume
        Else
            MsgBox "UnKnow ERR:" & Err.Description & ":" & Err.Number, vbCritical + vbOKOnly
        End If
    End Function
      

  2.   

    http://expert.csdn.net/Expert/topic/1355/1355122.xml?temp=9.316653E-02
    我这几天做了一个,1000的阶乘共1986位数,用了差不多5分钟,(机器不太好)算法类似手工乘法,没用数组,全是字符串操作,发现小学乘法学的不是很好,因此断续做了好几天,不过全是上班时间,报复老板吗?有点,说实话我现在多数时间是在混,我实在讨厌老板的嘴脸,谢谢你给我出了一个有意思的题目啊!