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的阶乘已经超出了整形的数据大小)
谢谢! 展开
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的阶乘已经超出了整形的数据大小)
谢谢! 展开
2个回答
展开全部
因为,integer类型默认为四字节整数,最大值为2^31-1=2147483647。而13的阶乘为6227020800,已经超出integer上限。
可以改用real*8双精度类型,这样n=33就不会溢出了。双精度类型的上限是10的308次方,最大可以计算到n=170,即170的阶乘。
可以改用real*8双精度类型,这样n=33就不会溢出了。双精度类型的上限是10的308次方,最大可以计算到n=170,即170的阶乘。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
http://www.fcode.cn/algorithm-50-1.html
我也不太理解,我是问的大神,论坛那有专门的讲解,你看看吧
我也不太理解,我是问的大神,论坛那有专门的讲解,你看看吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询