Pythonで数字が完全な平方数かどうかをチェックする方法


以下に、シンプルで簡単な方法といくつかのコード例を示します。

方法1: ルートを取得して整数部分を比較する Pythonのmathモジュールを使用して、与えられた数の平方根を取得し、その整数部分と元の数を比較します。もし一致していれば、その数は平方数です。

import math
def is_perfect_square(num):
    sqrt = math.sqrt(num)
    return int(sqrt)  2 == num
# 使用例
print(is_perfect_square(16))  # True
print(is_perfect_square(25))  # True
print(is_perfect_square(10))  # False

方法2: ループを使用して平方数を検索する 与えられた数以下のすべての整数をチェックし、その数の2乗が与えられた数と一致するかどうかを確認します。一致する場合、その数は平方数です。

def is_perfect_square(num):
    for i in range(num + 1):
        if i  2 == num:
            return True
    return False
# 使用例
print(is_perfect_square(16))  # True
print(is_perfect_square(25))  # True
print(is_perfect_square(10))  # False

方法3: バイナリサーチを使用する 与えられた数の範囲を狭めていきながら、平方数をバイナリサーチで探します。範囲を狭めるために、与えられた数の平方根を取得し、その値を中央値として使用します。

def is_perfect_square(num):
    low = 0
    high = num
    while low <= high:
        mid = (low + high) // 2
        if mid  2 == num:
            return True
        elif mid  2 < num:
            low = mid + 1
        else:
            high = mid - 1
    return False
# 使用例
print(is_perfect_square(16))  # True
print(is_perfect_square(25))  # True
print(is_perfect_square(10))  # False

以上の方法を使用して、Pythonで与えられた数が完全な平方数かどうかをチェックすることができます。これらのコード例を使用して、必要に応じてカスタマイズしたり、他の関数やプログラムに組み込んだりすることができます。