fortran中阶乘算法 100

我用fortran计算1~33的阶乘,大致程序如下programmainintegert,n,sopen(10,file='e:\N!.txt')t=1do20,n=1,... 我用fortran计算1~33的阶乘,大致程序如下
program main
integer t,n,s
open(10,file='e:\N!.txt')
t=1
do 20,n=1,33
t=t*n
write(10,*)n,t
20 continue
end
虽然没有程序报错,但是从输出的结果看,N在等于13的时候就开始出错了,得出的结果不正确,甚至出现负值。
请问程序哪里错误,还是t不应是整形?(我猜应该是13的阶乘已经超出了整形的数据大小)
谢谢!
展开
 我来答
帐号已注销
2022-05-01 · TA获得超过3110个赞
知道大有可为答主
回答量:4114
采纳率:0%
帮助的人:257万
展开全部
因为,integer类型默认为四字节整数,最大值为2^31-1=2147483647。而13的阶乘为6227020800,已经超出integer上限。
可以改用real*8双精度类型,这样n=33就不会溢出了。双精度类型的上限是10的308次方,最大可以计算到n=170,即170的阶乘。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ed96dba
2014-04-07
知道答主
回答量:8
采纳率:0%
帮助的人:3.4万
展开全部
http://www.fcode.cn/algorithm-50-1.html
我也不太理解,我是问的大神,论坛那有专门的讲解,你看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式