如何从一个Int的sqrt中获取最近的Int地板?

时间:2018-06-30 14:52:07

标签: swift

我需要等于或小于n的平方的最大整数。

我得到了不能对不可变值使用变异成员:“ sqrt”返回不可变值

func isPrime (n:Int) ->  Bool {
    if n < 2 { return false }

    generatePrimes(to: sqrt(Double(n)).round(.towardZero))

.squareRoot的相同问题

如何生成to:Int?

2 个答案:

答案 0 :(得分:1)

该错误消息具有误导性。 Double没有round(_ rule:)方法。 您可能是指rounded(_ rule:)

sqrt(Double(n)).rounded(.towardZero)

Double(n).squareRoot().rounded(.towardZero)

但是,如果您需要整数形式的结果,那么它就很简单

Int(Double(n).squareRoot())

因为从DoubleInt的转换已经被截断 结果接近零。

答案 1 :(得分:0)

如果您要使用Double调用generatePrimes

generatePrimes(to: floor(sqrt(Double(n)))

或者如果您想使用Int调用它

generatePrimes(to: Int(floor(sqrt(Double(n))))