Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra số chính phương trong Python

Cho một số nguyên n. Ta cần kiểm tra xem n có phải là số chính phương hay không. Số chính phương là số có căn bậc hai là số nguyên.

Ví dụ: n = 36 → True vì 36 = 6 × 6.

Thuật toán

  1. Tính phần nguyên của căn bậc hai: sq_root = int(sqrt(n)).
  2. Trả về True nếu sq_root * sq_root == n, ngược lại False.

Triển khai

from math import sqrt

def solve(n):
    sq_root = int(sqrt(n))
    return (sq_root * sq_root) == n

n = 36
print(solve(n))  # True

Đầu vào / Đầu ra

Input: 36
Output: True

Mở rộng: Đối với số rất lớn, có thể dùng math.isqrt (Python 3.8+) để tránh lỗi làm tròn float:

import math
def is_perfect_square(n):
    if n < 0:
        return False
    r = math.isqrt(n)
    return r * r == n