计算大数阶乘

您所在的位置:网站首页 9!怎么算阶乘怎么算 计算大数阶乘

计算大数阶乘

2024-07-13 07:14| 来源: 网络整理| 查看: 265

  本文给出一个使用Fortran语言的计算大数阶乘的程序,该程序可以计算出1-21万之间的数的阶乘。Fortran表示公式翻译语言,是最古老的高级语言,主要用途是科学计算,曾经很流行,但现在用的少了,他的大部分市场被C语言取代。在编写本程序之前,我从未写过Fortran程序,这个程序是现学现编。为了方便大家学习,我给出这个程序的一些注释。

 1. Fortran语言的一些语法特点,主要和C语言比。

       1.1 运算符主要有+,-,*,/和**,分别表示加,减,乘,除和乘方,他没有求余数的运算符,求余数使用函数MOD来做。

       1.2 数组的访问形式是array(i),他使用圆括号,而c语言使用方括号。

       1.3 数组可以定义下标的范围,下标可以为负数,默认的下标从1开始。而c语言的下标总是从0开始。

       1.4 变量定义的特点,INTEGER类似于c中的int, 变量定义要写成“变量类型::变量”的形式,不可改变的变量的定义形式为“变量类型,PARAMETER::变量名=”,动态数组

           申明的格式为“变量类型,DIMENSION(:),ALLOCATABLE::变量名”

       1.5 语句后面不需要任何符号,c语言中,语句后面必须使用分号。

       1.6 动态数组的分配使用ALLOCATE,释放使用DEALLOCATE,不需要使用指针。

       1.7 输入使用READ,输出使用WRITE。WRITE支持格式符,在语言中,格式符中的特殊格式开始于“%”,可以在格式符中使用字符串,而在Fortran中,格式符需要用()括起来,格式符中的字符串必须使用“”,如 '(I6"!="I4.1\)')。在C语言中,输出默认是不换行,Fortran恰好相反。如果要换行,需在格式符最后加上"\". ,另外,也可以用advance="no"的语法来说明,不换行。

      1.8  c是强类型语言,变量必须定义,然后才可以使用。默认的,Fortran中的变量可以不定义而使用,语句“IMPLICIT NONE”表示变量必须定义。

      1.9  c的行注释是//,Fortran是 !

      1.10 Fortran程序中,程序,循环块必须配对,程序以PROGRAM开始,以END PROGRAM结束。

      1.11 Fortran中,关键字和变量是大小不敏感的,Fortran90推荐使用小写格式。这里则保持了大小格式。

  2. 主要算法描述

     2.1  阶乘的结果是一个很大的数,这里的大数用数组来表示,大数使用10000进制存储,低位在前,高位再后,和书写数序相反。buff[1]表示大数的最低4位,buff[2]表示次低4位,以此类推。

    2.2  n!的有多少为10进制数。

    然后计算N!万进制表示的长度。因为n!小于(n+1)/2的n次方,故首先使用函数log10,估算(n+1)/2)^n的10进制的位数,然后除以4+1得到万进制表示的位数的一个上限。n!小于(n+1)/2的n次方的证明见下:

Caes 1:n是奇数     n!可表示为连续n个数的乘积,中间的那个数mid=(n+1)/2, 除了这个数外,我们可以将1到n之间的数分成n/2组,每组的两个数为 mid-i和mid+i (i=1到mid-1),如1,2,3,4,5,6,7,中间的那个数是4,其余的3对数是(3,5),(2,6)和(1,7),容易知道,每对数的积都于小mid*mid,故n!小于mid的n次方,即 n!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3