1

我想知道是否有办法在 Swift 中找到一个数字是否是一个完美的正方形。我让用户输入一个数字来检查它是否是一个完美的正方形。有没有语句或函数?先感谢您!

4

2 回答 2

2

编辑/更新:Swift 5.2

extension BinaryInteger {
    var isPerfectSquare: Bool {
        guard self >= .zero else { return false }
        var sum: Self = .zero
        var count: Self = .zero
        var squareRoot: Self = .zero
        while sum < self {
            count += 2
            sum += count
            squareRoot += 1
        }
        return squareRoot * squareRoot == self
    }
}

操场

4.isPerfectSquare     // true
7.isPerfectSquare     // false
9.isPerfectSquare     // true
(-9).isPerfectSquare  // false
于 2017-04-09T02:14:54.423 回答
2

尝试这样的事情:

var number = 9.0

let root = sqrt(number)
let isInteger = floor(root) == root
print("\(root) is \(isInteger ? "perfect" : "not perfect")")

我在这个相关问题中找到的那个“ isInteger”位。

于 2017-04-09T01:01:29.143 回答