Menu
CoddyTech

Square Root (Integer)

Hàm của bạn nhận một số nguyên không âm x và trả về căn bậc hai nguyên của nó: số nguyên lớn nhất r sao cho r × r ≤ x. Nói cách khác, lấy phần nguyên của căn bậc hai, vì vậy nếu một số không phải là số chính phương thì kết quả là căn bậc hai của số chính phương nhỏ hơn liền kề. Hãy tự tính kết quả, không dùng hàm căn bậc hai hay hàm lũy thừa có sẵn.

Hàm

mySqrt(x: integer) → integer
xinteger
số nguyên không âm cần lấy căn bậc hai
Trả vềinteger
căn bậc hai của x được làm tròn xuống thành số nguyên

Ràng buộc

  • 0 ≤ x ≤ 231 - 1
  • Không gọi hàm căn bậc hai, hàm lũy thừa hoặc hàm số mũ có sẵn.

Ví dụ

Đầu vào
x = 17
Đầu ra
4
Giải thích
4 × 4 = 16 không vượt quá 17, nhưng 5 × 5 = 25 lớn hơn, nên căn bậc hai của 17 được làm tròn xuống 4.
challenge icon

Câu hỏi mở rộng

Bạn sẽ tìm căn bậc ba nguyên như thế nào, tức số nguyên lớn nhất r thỏa mãn r × r × r ≤ x, nếu x cũng có thể âm?

Đặt lại code
def mySqrt(x):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

x = 17

Đầu ra mong đợi

4