IE,
Что я здесь делаю неправильно? Нужно ли это со списками, последовательностями и массивами и тем, как работают ограничения?
Итак, вот настройка: я пытаюсь сгенерировать некоторые простые числа. Я вижу, что есть миллиард текстовых файлов из миллиарда простых чисел. Вопрос не в том, почему... вопрос в том, как ребята используют python, вычисляя все простые числа ниже 1,000,000 в миллисекундах на этом сообщении... и что Я делаю неправильно со следующим кодом F #?
let sieve_primes2 top_number =
let numbers = [ for i in 2 .. top_number do yield i ]
let sieve (n:int list) =
match n with
| [x] -> x,[]
| hd :: tl -> hd, List.choose(fun x -> if x%hd = 0 then None else Some(x)) tl
| _ -> failwith "Pernicious list error."
let rec sieve_prime (p:int list) (n:int list) =
match (sieve n) with
| i,[] -> i::p
| i,n' -> sieve_prime (i::p) n'
sieve_prime [1;0] numbers
Когда таймер включен в FSI, я получаю процессор на 4,33 секунды для 100000... после этого все просто взрывается.