Я пытаюсь реализовать этот алгоритм, но я продолжаю получать синтаксическую ошибку на 12-й строке, но я не могу определить, что ее вызывает. Я новичок в ocaml, и любая помощь будет очень признательна.Что вызывает здесь синтаксическую ошибку?
«Для того, чтобы найти все простые числа меньше или равно заданному числа п по методу Эратосфена:
Создать список последовательных целых чисел от 2 до п: (2, 3, 4, ... , n). Изначально пусть p равно 2, первое простое число. Начиная с p, перечислите его кратность путем подсчета до n с шагом p и пометьте их в списке (это будут 2p, 3p, 4p, ..., сам p не должен быть помечен). Найдите первое число, большее чем p в списке, не отмеченном. Если такого номера не было, остановите. В противном случае пусть p теперь будет равным этому новому номеру (который равен следующее простое) и повторите с шага 3. "
let prime(n) =
let arr = Array.create n false in
let set_marks (arr , n , prime) = Array.set arr (n*prime) true in
for i = 2 to n do
set_marks(arr,i,2) done
let findNextPrimeNumberThatIsNotMarked (arr, prime , index) =
let nextPrime = Array.get arr index in
let findNextPrimeNumberThatIsNotMarkedHelper (arr, prime, index) =
if nextPrime > prime then nextPrime
else prime in
;;
Я пробовал это, но это не решило проблему. – user3567081
Достаточно честный. Но никакая действительная программа OCaml не может закончиться 'in'. Это верно. Я сделаю еще одно предложение. –