1*2*3*4*....*100的最简单算法

来源:百度知道 编辑:UC知道 时间:2024/06/07 12:57:55
如上问题,请用最通俗文字说明/.

#include<stdio.h>

#define N 31

main()
{
unsigned long i,sum=1;

for(i=1;i<=N;i++)
{
sum*=i;
}
printf("%d\n",sum);
}

上面这种方法能得到阶乘的值,但N最大只能为31,否则就溢出了

可以用手工算法。
就是任意长位的数字相乘都可以。
更详细一点,把数字用字符串处理,如用户输入的1231313*12313235065454646343
其实是"1231313*12313235065454646343",
然后你分别提取"1231313"和"12313235065454646343"用代码模拟人手工计算。

12
12
--
24
12
---
144

说白了就是算100的阶乘。
double fun(int n)//传入100
{
double x=0;
if(n == 0 || n == 1)
return 1;
else
x = n*fun(n-1);
return x;
}

#include<stdio.h>
void main()
{
double i,sum=1;
for(i=1;i<=100;i++)
sum=sum*i;
printf("%d",sum);
}

double都不够长 干脆计算对数加法 再还原回来得了 用matlab只有2行
for i=1:100 buf[i]=log(i);end
exp(sum(buf)) %不加分号就可以直接显示 否则只计算不显示<