早教吧 育儿知识 作业答案 考试题库 百科 知识分享

FORTRAN中E:\111\111\1111.for(23):Error:Thisnamedoesnotmatchtheunit遇到这个问题怎么办啊?PROGRAMMAINCINTEGERN,I,J,KWRITE(*,*)'输入一个自然数,打印出其质因子'READ(*,*)NM=0DO20I=2,NIF(MOD(N,I)

题目详情
FORTRAN 中E:\111\111\1111.for(23) : Error: This name does not match the unit 遇到这个问题怎么办啊?
PROGRAM MAIN
C INTEGER N,I,J,K
WRITE (*,*) '输入一个自然数,打印出其质因子'
READ (*,*) N
M=0
DO 20 I=2,N
IF (MOD(N,I).NE.0)THEN
GOTO 20
ELSE
J=2
WRITE(*,*) M

K=SORT(REAL(I))
10 IF(J.LE.K.AND.MOD(I,J).NE.0) THEN
J=J+1
GOTO 10
ENDIF
ENDIF
IF (J.GT.K) M=M+I

20 CONTINUE
END
ENDPROGRAM
▼优质解答
答案和解析
诚如2楼所言:
1、SORT应为SQRT
2、倒数第二行的END应删掉
此外,你程序的算法也不对:
1、INTEGER N,I,J,K不要注释掉,声明变量是好习惯
2、第5行M=0删掉.变量M在这个程序里根本不需要,因为变量i是可能的因子,如果经检验确实是质因子,直接输出i就可以了.
3、K=SORT(REAL(I))改为K=floor(SQRT(REAL(I)))
4、中间的WRITE(*,*) M要删掉(否则一上来就输出0)
5、IF (J.GT.K) M=M+I改成IF (J.GT.K) WRITE(*,*)i
另外,建议PROGRAM MAIN下一行加implicit none,这也是需要养成的好习惯啊.