我想从0所有质数的总和为2 000 000F#总和为Int32列表抛出算术运算导致溢出
这是我的代码:
let getPrimesUpTo (x : System.Int32) =
let upperBound = Convert.ToInt32(Math.Sqrt(Convert.ToDouble(x)))
let allNumbers = ref [1..x] in
for div = 2 to upperBound do allNumbers := List.filter (fun num -> (num % div <> 0 || div >= num)) !allNumbers
allNumbers
let sop =
let nums = !(getPrimesUpTo 2000000)
List.sum nums
当我运行它,我得到:“算术运算导致溢出”
如果我不这样做List.sum我得到的素数
雅,这可以工作,但可以'工作'与int32 – Omu
工作,而且,我得到一个Int32数字列表,唯一的问题是List.Sum – Omu
@ChuckNorris:不熟悉F#,你可以指定一个转换作为List.sum调用的一部分吗?例如'List.sum nums Convert.ToInt64' –