使用“时出现语法错误”;X!=0“;用Fortran语言
我的Fortran程序有一个问题,它只不过是计算素数分解(或者应该做)。这就是错误:使用“时出现语法错误”;X!=0“;用Fortran语言,fortran,gfortran,Fortran,Gfortran,我的Fortran程序有一个问题,它只不过是计算素数分解(或者应该做)。这就是错误: C:\MinGW\Fortran>gfortran aufg3.f90 aufg3.f90:15.15: if (prim(i) != 0 .and. modulo(n, prim(i)) == 0) then 1 Error: Missing ')' in statement at or before (1) aufg3.f90:19.7: end if
C:\MinGW\Fortran>gfortran aufg3.f90
aufg3.f90:15.15:
if (prim(i) != 0 .and. modulo(n, prim(i)) == 0) then
1
Error: Missing ')' in statement at or before (1)
aufg3.f90:19.7:
end if
1
Error: Expecting END DO statement at (1)
aufg3.f90:34.13:
if (prim(i) != 0) then
1
Error: Missing ')' in statement at or before (1)
aufg3.f90:38.5:
end if
1
Error: Expecting END DO statement at (1)
我什么都试过了,但完全不知道会出什么问题。谢谢你的帮助。代码如下:
程序aufg3
隐式无
整数::n,i
整数,可分配,维度(:)::prim
做
印刷品*,“Bite natürliche Zahl eingeben”,0“für Abbruch:”
读*,n
如果(n==0)退出
分配(prim(2:n))
呼叫时代(prim,n)
打印*,n,'=1'
做
如果(n==1)退出
i=2,n吗
如果(prim(i)!=0,模(n,prim(i))=0,则
打印*,“*”,原始(i)
n=n/prim(i)
出口
如果结束
结束
结束
解除分配(prim)
结束
结束程序
子例程era(prim,m)
整数,意图(in)::m
整数,维度(2:m)::prim
整数::i,j
i=2,m吗
prim(i)=i
结束
i=2,整数(sqrt(实(m)))
如果(prim(i)!=0),则
doj=i*i,m,i
prim(j)=0
结束
如果结束
结束
结束子程序
好吧,这是Fortran和代码>表示注释。所以编译器实际上看到了
if (prim(i)
这不是有效的陈述。您看到的错误消息反映了这一点
Fortran中的“不相等”是/=
或.ne.
:
if (prim(i) /= 0 .and. modulo(n, prim(i)) == 0) then
后来:
if (prim(i) /= 0) then
fortran中“不等于”的标记为/=!开始注释,因此编译器将第15行读取为
if (prim(i)
因为if语句中没有括号来关闭逻辑表达式,所以它很混乱。因此,只需更换!=使用/=应该可以解决这个问题。您对“不等于”使用了错误的表示法。Fortran语法是/=
或.NE.
因此,您应该使用:
if (prim(i) /= 0 .and. modulo(n, prim(i)) == 0) then
及
此外,你的integer(sqrt(real(m)))
语法不正确,也许你的意思是NINT(sqrt(real(m))
?我被另外两个(好)答案吓到了,但别忘了把integer(sqrt(real(m))
改成NINT(sqrt(real(m))
。非常感谢!我是Fortran的新手,之前经常使用C语言,所以“!=”只是看起来不错;-)
if (prim(i) /= 0 .and. modulo(n, prim(i)) == 0) then
if (prim(i) /= 0) then