我需要等于或小于n的平方的最大整数。
我得到了不能对不可变值使用变异成员:“ sqrt”返回不可变值
func isPrime (n:Int) -> Bool {
if n < 2 { return false }
generatePrimes(to: sqrt(Double(n)).round(.towardZero))
.squareRoot
的相同问题
如何生成to:Int?
答案 0 :(得分:1)
该错误消息具有误导性。 Double
没有round(_ rule:)
方法。
您可能是指rounded(_ rule:)
sqrt(Double(n)).rounded(.towardZero)
或
Double(n).squareRoot().rounded(.towardZero)
但是,如果您需要整数形式的结果,那么它就很简单
Int(Double(n).squareRoot())
因为从Double
到Int
的转换已经被截断
结果接近零。
答案 1 :(得分:0)
如果您要使用Double调用generatePrimes
generatePrimes(to: floor(sqrt(Double(n)))
或者如果您想使用Int调用它
generatePrimes(to: Int(floor(sqrt(Double(n))))