回 帖 发 新 帖 刷新版面

主题:[讨论]请教子程序的一个用法问题


我想请教下定义以及使用子程序时什么时候加(),什么时候不加啊。
比如下面的是求50到100的素数,并将他们求和。PRIM和PEIME(I)肿么用呢,有区别吗?为啥有时候写的PRIME(I)提示错误,这是数组呢?

    PROGRAM LT1
    IMPLICIT NONE
    EXTERNAL PRIME
    LOGICAL     PRIME
          INTEGER SUM,I,N
    N=0
    SUM=0
    DO 10 I=50,100
        IF(PRIME(I)) SUM=SUM+I
        WRITE(*,'(1X,I5\)') I
        N=N+1
        IF(MOD(N,5).EQ.0)  PRINT *
10    CONTINUE
    PRINT *,SUM
    PAUSE
    END

    LOGICAL FUNCTION  PRIME(A)
    INTEGER A,K,J
         PRIME=.TRUE.
    K=SQRT(REAL(A))
    DO 20 J=2,K
        IF(MOD(A,J).EQ.0) EXIT
20    CONTINUE
    IF(J.LE.K) PRIME=.FALSE.
    RETURN
    END

回复列表 (共2个回复)

沙发

LOGICAL FUNCTION  PRIME(A)
等价于
FUNCTION  PRIME(A)
LOGICAL  PRIME
就是这个函数返回值放在PRIME里面, 所以在子函数里面PRIME只是变量. 在其他地方调用这个函数,PRIME()是函数,里面填什么值由你决定.
如果这方面还有疑惑请翻书认真看看.

板凳

好的谢谢你啦

我来回复

您尚未登录,请登录后再回复。点此登录或注册