How to get the square root rounded down to the nearest integer of a positive integer in Go

1 Answer

0 votes
package main

import (
    "fmt"
)

func mySqrt(n int) int {
    if n == 0 || n == 1 {
        return n
    }

    start, end := 1, n

    for start <= end {
        mid := start + (end - start) / 2

        // Use int64 to avoid overflow on mid*mid
        midSq := int64(mid) * int64(mid)

        if midSq > int64(n) {
            end = mid - 1
        } else if midSq == int64(n) {
            return mid
        } else {
            start = mid + 1
        }
    }

    return end
}

func main() {
    fmt.Println(mySqrt(240000)) 
}



/*
run:

489

*/

 



answered Dec 29, 2025 by avibootz
edited Dec 29, 2025 by avibootz

Related questions

...