Я просто пытаюсь немного познакомиться с Фортраном (потому что я могу), поэтому я написал эту небольшую программу, которая использует Сито Эратосфена для генерации простых чисел.Вот программа:
program prime
implicit none
integer num_primes, at, found, i
logical is_prime
integer, allocatable, dimension(:) :: primes ! array that will hold the primes
print *, "How many primes would you like to find?"
read (*, *) num_primes
allocate (primes(num_primes))
primes(1) = 2
at = 2
found = 1
do
is_prime = .true. ! assume prime
do i = 1, found
if (modulo(at, primes(i)) == 0) then ! if divisible by any other element
is_prime = .false. ! in the array, then not prime.
at = at + 1
continue
end if
end do
found = found + 1
primes(found) = at
print *, at
at = at + 1
if (found == num_primes) then ! stop when all primes are found
exit
endif
end do
простое завершение программы
Запуск этой программы покажет, в чем заключается ошибка, например, попытка найти 10 простых чисел приведет к следующим числам: 3, 57, 11, 13, 16, 17, 19, 23. Очевидно, 16 не простое число.Что может быть не так?