谁可以帮忙用fortran语言编写一个程序?是求n元一次方程组的解!或者是求100!的精确解!谢谢
1个回答
展开全部
! 求290以下正整数的阶乘的精确解
IMPLICIT NONE
INTEGER::J(100)=0,N,I,K
N=-1
DO WHILE(N>290.OR.N<0)
WRITE(*,*) '请输入一个小于290的正整数:'
READ(*,*) N
ENDDO
J(100)=1
IF(N>=2)CALL JS()
WRITE(*,*) N,'的阶乘等于:'
DO I=1,100-1; IF(J(I)>0)THEN; K=I; WRITE(*,'(I10\)') J(I); EXIT; ENDIF; ENDDO
DO I=K+1,100; WRITE(*,'(I6.6\)') J(I); ENDDO
WRITE(*,*)
CONTAINS
SUBROUTINE JS()
DO K=2,N
J=J*k
DO I=100,2,-1
IF(J(I)>999999)THEN
J(I-1)=J(I-1)+J(I)/10**6
J(I)=MOD(J(I),10**6)
ENDIF
ENDDO
ENDDO
END SUBROUTINE JS
END
IMPLICIT NONE
INTEGER::J(100)=0,N,I,K
N=-1
DO WHILE(N>290.OR.N<0)
WRITE(*,*) '请输入一个小于290的正整数:'
READ(*,*) N
ENDDO
J(100)=1
IF(N>=2)CALL JS()
WRITE(*,*) N,'的阶乘等于:'
DO I=1,100-1; IF(J(I)>0)THEN; K=I; WRITE(*,'(I10\)') J(I); EXIT; ENDIF; ENDDO
DO I=K+1,100; WRITE(*,'(I6.6\)') J(I); ENDDO
WRITE(*,*)
CONTAINS
SUBROUTINE JS()
DO K=2,N
J=J*k
DO I=100,2,-1
IF(J(I)>999999)THEN
J(I-1)=J(I-1)+J(I)/10**6
J(I)=MOD(J(I),10**6)
ENDIF
ENDDO
ENDDO
END SUBROUTINE JS
END
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询