【发布时间】:2016-05-10 08:57:49
【问题描述】:
剧透警告!您将看到 projecteuler.net-Problem 7 的解决方案。
如果这是重复的,我很抱歉,但我在这里找不到相同的问题。
我在一个函数中计算一个数字序列并希望返回第 n 个数字。
let isPrime x =
{2..x/2}
|> Seq.exists (fun e -> x%e=0)
|> not
let PrimeNumber nth =
let unfolder a =
a
|> Seq.unfold (fun e -> Some(e, e+1))
|> Seq.find isPrime
|> fun e -> Some(e, e)
2
|> Seq.unfold unfolder
|> Seq.skip (nth-1)
|> Seq.head
let ans = PrimeNumber 10001
ans 将始终为 2,但为什么呢?
当我用nth=10001 评估PrimeNumber 中的最后一个表达式时,会返回正确的项目。我错过了什么吗?
【问题讨论】: