我正在使用Fortran解决Project Euler问题;问题是创建一个Fibonacci序列并找到所有偶数的总和低于400万。这是我写的
implicit none
integer*4::a(1:4000000),sum
integer*4::i,maxc
maxc = 3999999
a(1) = 1
a(2) = 2
do i = 3,maxc,1
a(i) = a(i-1) + a(i-2)
end do
sum = 0
do i = 1,maxc
if (mod(a(i),2)==0) then
sum = sum + a(i)
end if
end do
print*,sum
end
输出为-1833689714
知道出了什么问题吗?
答案 0 :(得分:0)
由于您选择的整数类型的大小,您可以表示的数字有限制。
在您的代码中,v1 <- c("Testis_NOA_ID","Testis_NOA_IDSt")
(2147483647
获得gfortran
)。
可以证明,您的实施中print *,huge(sum)
超出了此限制。
然后,您将获得整数溢出,并且该值变为负数。
简单地使用浮点表示来表示总和,即
i=59
诀窍。