我想在做循环这应该生成素数的if语句。为此我用modulo
来整理数字。之后,它发现了一个素数,我希望它再向前迈进一步,并添加1,使得下一素数可以发现并添加到阵列pzahl
。我的问题是,循环似乎忽略它应该更进一步与plauf
后,发现了一个素数,以便它只是不断下去,直到无穷大......我试图重新循环语句的,如果内容,但它只是不工作。下面是代码:DO循环忽略if语句
PROGRAM Primzahlen
IMPLICIT NONE
INTEGER :: start, plauf, n, a
INTEGER, ALLOCATABLE, DIMENSION(:) :: pzahlen !array into which the prime numbers should be added
INTEGER :: input
INTEGER, DIMENSION(:), ALLOCATABLE :: alle
PRINT *, "How many prime numbers should be listed"
READ (*,*) input
ALLOCATE (pzahlen(input))
pzahlen(1) = 1
start = 2
plauf = 1
loop1: DO
ALLOCATE(alle(start))
loop2: DO n = 1,start
alle(n)= MODULO(start,n)
END DO loop2
IF (minval(alle) /= 0) THEN ! This is what it seems to ignore.
plauf= plauf + 1
pzahlen(plauf) = start
PRINT *, plauf
END IF
start = start + 1
IF (plauf == eingabe) then
EXIT
END IF
PRINT *, alle
DEALLOCATE(alle)
END DO loop1
PRINT *, "prime numbers:" , pzahlen(1:input)
END PROGRAM Primzahlen
我使用gfortran编译器和它是否可以帮助了解写在Emacs。
你不应该做到底LOOP1? – Davislor
END DO loop1在结尾处。但我不完全确定是否应该更早使用它。 – traytray