#include<conio.h>
#include<stdio.h>
#include<stdlib.h>// for malloc()
#include<string.h>// for memset()
#define QUOTIETY 4 // 内存分配系数,计算10000以内阶乘设置为4就足够,如果需要
// 计算更大的数的阶乘,则将该系数适当增大
void process(const int index, int *result)
int cnt = 1
int main(void)
{
int index = 0
int input = 0
int *result = NULL
int count=0
// 获得输入数据
printf("请输入你要计算的阶乘数n:\n")
scanf("%d", &input)
while (input <= 0)
{
printf("请输入合理的数据,谢谢:\n")
scanf("%d", &input)
}
// 申请空间储存计算结果
result = (int *)malloc(sizeof(int) * input * QUOTIETY)
if (result == NULL)
{
printf("内存申请失败!\n")
exit(-1)
}
memset(result, 0, sizeof(int) * input * QUOTIETY)// 初始化存储空间
result[0] = 1
// 进行阶乘计算
for ( index = 1index <= input++index)
{
process(index, result)
}
// 打印结果
for (index = cnt - 1index >= 0L--index)
{
printf("%d", result[index])
count++
if(count%40==0) printf("\n")
}
putchar('\n')
printf("结果一共有%d位数!\n", cnt)
free(result)
getch()
return 0
}
/*
* 计算阶乘核心代码
*/
void process(const int index, int *result)
{
int product = 0// 乘积
int carry = 0// 进位
int remainder = 0// 余数
int i = 0
for (i = 0i <cnt++i)
{
product = result[i] * index + carry
carry = product / 10
remainder = product % 10
result[i] = remainder
}
if (carry != 0)
{
while (carry / 10 != 0)
{
result[cnt] = carry % 10
carry /= 10
++cnt
}
result[cnt++] = carry
}
}
运行示例:
请输入你要计算的阶乘数n:
200
7886578673647905035523632139321850622951
3597768717326329474253324435944996340334
2920304284011984623904177212138919638830
2576427902426371050619266249528299311134
6285727076331723739698894392244562145166
4240254033291864131227428294853277524242
4075739032403212574055795686602260319041
7032406235170085879617892222278962370389
7374720000000000000000000000000000000000
000000000000000
结果一共有375位数!
n!=n*(n-1)*...*2*1特别的,数学家定义0!=1,
这样0!=1!=1,
通常,阶乘都是定义在自然数范围内的,小数没有阶乘。
我们在排列组合,和概率统计中时常会使用阶乘运算。
不知道你学的什么语言
自己也很久没有碰过这玩意儿了,但是大多数的语言还是有共同点的
一般来说要用循环语句
x=1
i=1
do while i≤n
x=x*i
i=i+1
enddo
(仅供参考)
等于0的时候另加说明,
这个你肯定比我懂了,
阶乘公式在编程中都是用循环语句,没有直接的数学公式
你好 阶乘(factorial)是基斯顿·卡曼(Christian Kramp, 1760 – 1826)于1808年发明的运算符号。阶乘,也是数学里的一种术语。[编辑本段]【阶乘的计算方法】阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。例如所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。 例如所要求的数是6,则阶乘式是1×2×3×……×6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1×2×3×……×n,设得到的积是x,x就是n的阶乘。[编辑本段]【阶乘的表示方法】在表达阶乘时,就使用“!”来表示。如x的阶乘,就表示为x! 如:n!=n×(n-1)×(n-2)×(n-3)×...×1阶乘的另一种表示方法:(2n-1)!!当n=2时,3!!=3×1=3当n=3时,5!!=5×3×1=15当n=4时,7!!=7×5×3×1=105...(以此类推)[编辑本段]【20以内的数的阶乘】以下列出0至20的阶乘:0!=1,1!=1,2!=2, 3!=6, 4!=24, 5!=120, 6!=720, 7!=5040, 8!=40320 9!=362880 10!=362880011!=3991680012!=47900160013!=622702080014!=8717829120015!=130767436800016!=2092278988800017!=35568742809600018!=640237370572800019!=12164510040883200020!=2432902008176640000另外,数学家定义,0!=1,所以0!=1![编辑本段]【阶乘的定义范围】通常我们所说的阶乘是定义在自然数范围里的,小数没有阶乘,像0.5!,0.65!,0.777!都是错误的。但是,有时候我们会将Gamma函数定义为非整数的阶乘,因为当x是正整数n的时候欢迎分享,转载请注明来源:内存溢出
评论列表(0条)