Go编写x的平方根 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 输入格式: 大于0小于2^32-1 输出格式: 返回类型是整数,小数部分将被舍去 输入样例: 8 输出样例: 2
时间: 2024-02-20 07:57:49 浏览: 23
好的,这是一个求平方根的编程问题,下面是 Go 语言的代码实现:
```go
package main
import "fmt"
func mySqrt(x int) int {
if x == 0 {
return 0
}
left, right := 1, x
for left <= right {
mid := left + (right-left)/2
if mid*mid == x {
return mid
} else if mid*mid < x {
left = mid + 1
} else {
right = mid - 1
}
}
return right
}
func main() {
var x int
fmt.Scan(&x)
fmt.Println(mySqrt(x))
}
```
我们可以使用二分查找的思想来实现求平方根的算法。首先判断特殊情况,如果 x 等于 0,则直接返回 0。接着使用二分查找的方法,将平方根的范围缩小到 1 到 x 之间,每次取中间的数字 mid,计算 mid 的平方,如果 mid 的平方等于 x,则直接返回 mid。如果 mid 的平方小于 x,则说明平方根在 mid 的右侧,将左边界 left 调整为 mid+1。如果 mid 的平方大于 x,则说明平方根在 mid 的左侧,将右边界 right 调整为 mid-1。循环查找,直到找到平方根所在的数字,最后返回右边界 right 即可。