回 帖 发 新 帖 刷新版面

主题:n的阶乘(高精度)

求n的阶乘高精度的程序!
各位高手来写一写啊

回复列表 (共8个回复)

沙发

cls
input N#
Z#=1
for I#=1 to N#
Z#=Z#*I#
next
print N#;"!="Z#
end

50分!

板凳

先给30分,再选为最佳答案

3 楼

淡淡的

4 楼

CLS
INPUT n
DIM a(n)
a(1) = 1
FOR i = 1 TO n
   g = 0
   FOR j = 1 TO n
     t = a(j) * i + g
     g = t \ 10
     a(j) = t MOD 10
   NEXT j
NEXT i
DO UNTIL a(n) <> 0
   n = n - 1
LOOP
FOR i = n TO 1 STEP -1
   PRINT LTRIM$(STR$(a(i)));
NEXT i

5 楼

( ⊙ o ⊙ )啊!

6 楼


[em13]

7 楼

该程序有重大错误:只能算N<=24 

(因为,当N>24,N!的位数大于N :D )

8 楼

一个可用的程序:

[font=宋体]
DEFINT A-Z
    '
    DIM A(8920) AS INTEGER
    CLS
    INPUT "N=[2..10000], N=", N
    IF N > 10000 THEN N = 10000
    T1! = TIMER
    A(1) = 1
    Nm = 1   '结果位数
    FOR i& = 1 TO N
        g = 0
        FOR j = 1 TO Nm
            E& = A(j) * i& + g
            g = E& \ 10000
            A(j) = E& - g * 10000&
        NEXT j
        IF g > 0 THEN
            Nm = Nm + 1
            A(Nm) = g
        END IF
    NEXT i&
    '
    T$ = LTRIM$(STR$(A(Nm)))
    L& = LEN(T$)
    PRINT T$;
    FOR K = Nm - 1 TO 1 STEP -1
       PRINT RIGHT$("000" + LTRIM$(STR$(A(K))), 4);
       L& = L& + 4
    NEXT K
    PRINT
    PRINT "Total Digits:"; L&; " Time="; TIMER - T1!; "s"
END


[/font]

我来回复

您尚未登录,请登录后再回复。点此登录或注册