计算大数阶乘--basic版

来源:互联网 发布:淘宝手机图片尺寸 编辑:程序博客网 时间:2024/05/21 19:24

代码见下:

OPTION BASE 1DIM buff(16000) AS LONGPRINT "calc n!"INPUT "n="; nn%rad& = 10000arrLen% = 1buff(1) = 1FOR i% = 1 TO nn% STEP 1   cc& = 0   FOR j% = 1 TO arrLen% STEP 1       tt& = buff(j%) * i% + cc&       buff(j%) = tt& MOD rad&       cc& = tt& \ rad&   NEXT   IF (cc& > 0) THEN       arrLen% = arrLen% + 1       buff(arrLen%) = cc&   END IFNEXTPRINT "n!="; LTRIM$(RTRIM$(STR$(buff(arrLen%))));FOR i% = arrLen% - 1 TO 1 STEP -1    s$ = LTRIM$(RTRIM$(STR$(buff(i%))))    len1% = LEN(s$)    IF (len1% < 4) THEN        PRINT STRING$(4 - len1%, "0");    END IF    PRINT s$;NEXT


说明:
1. 该程序在qbasic 下编译通过。
  qbasic 可从 http://xiazai.zol.com.cn/detail/14/132311.shtml 下载
  QBasic的学习,可参考http://www.zz5z.net/qb/index.htm
2. Qbasic是16位dos程序,数组的大小不能超过64k,故定义数组 buff(16000)。16000×4 <64K
3. 对bas程序的说明,免得时间长了忘记其语法。
  3.1 变量名称后缀的含义
    %:整数,2bytes, &:长整数,4bytes, $:字符串。
   3.2 数组使用 (), 而不用中括号
   3.3 运算符:mod  求余, "/" 整除
   3.4 Input 输入,第一个字符串表示提示信息
   3.5 Print 输出,”:”分割表示紧凑格式输出,“,”最各个字段的分隔符,松散格式输出
   3.6 函数,字符串函数以$结尾,
      STRING$, 重复多次字符串
      LTRIM$,RTIRM$: 除去前导/尾随空格
      STR$: 数值转换为字符串
4 性能比较:和Dos批处理和Linux Bash相比,虽然同是解释性语言,但在qbasic 运行比dos批处理和Linux bash快得多