#7m#include<stdio.h>
void main()
{
int i,n;
double p=1;
printf("输入一个自然数n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
p=p*i;
printf("n!=%10.0
【查看更多内容请登录哈】
请不要将double类型和int类型变量之间强制赋值= = 求阶乘不可能出现小数直接用int就行
下面贴修改后代码 亲测无误
#include<stdio.h>
#include *本站禁止HTML标签噢*
int main()
int p=
【链接登录后可见】
直接告诉lz算法吧
一个2 一个5,产生一个0
2总是比5多的,所以只要统计(1,2...n)每个数字中因数5的个数就可 ...
小白表示无法理解 #30m 不过还是谢谢大神#32m
在int范围以内时是对的,最高可计算到12的阶乘,如果输入13,m=p赋值后的m的值已经超出了int的存储范围,得 ...
嗖迪斯奈 谢谢大神
2总是比5多的,所以只要统计(1,2...n)每个数字中因数5的个数就可以了
所有数字扫一遍
一个O(n)的过程很容易写出来
最快估计能到log(5, n),计算floor(n/5) + floor(n/25) + floor(n/125)
在int范围以内时是对的,最高可计算到12的阶乘,如果输入13,m=p赋值后的m的值已经超出了int的存储范围,得到的m值直接是负数了,自然会出错。
纯表情小心哟
#km