如何在Integral类型中获得sqrt的楼层
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Integral类型中获得sqrt的楼层相关的知识,希望对你有一定的参考价值。
我在Haskell中编写了简单的函数,我想检查数字是否为素数且具有较小的优化。我不知道如何写正确的roundSqrt
roundSqrt :: Integral -> Integral
roundSqrt x = floor (sqrt (fromIntegral x))
isPrime :: Integral t => t -> Bool
isPrime n = [i | i <- [2..k], n `mod` i == 0] == []
where k = roundSqrt(n)
答案
Integral
是类型类,因此它不应该用作类型。您甚至在isPrime
类型注释中正确使用它。所以,为了使它工作,你应该写
roundSqrt :: Integral t => t -> t
以上是关于如何在Integral类型中获得sqrt的楼层的主要内容,如果未能解决你的问题,请参考以下文章