ホームページ  >  記事  >  バックエンド開発  >  数値が完全な平方であるかどうかを正確に判断するにはどうすればよいですか?

数値が完全な平方であるかどうかを正確に判断するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-08 19:54:02989ブラウズ

How to Accurately Determine if a Number is a Perfect Square?

完全平方の検索: 包括的な方法

数値が完全平方であるかどうかを判断するのは簡単そうに見えますが、浮動小数点演算に依存するのは信頼性が低い場合があります。精度を高めるには、以下に示すような整数ベースのアプローチを採用することが重要です。

このアルゴリズムは、バビロニア方式の平方根計算を利用します。現在の推定値の平均と、その推定値で割った数値を計算することで平方根を繰り返し推定します。

def is_square(apositiveint):
  x = apositiveint // 2
  seen = set([x])
  while x * x != apositiveint:
    x = (x + (apositiveint // x)) // 2
    if x in seen: return False
    seen.add(x)
  return True

このメソッドは、任意の正の整数に対して収束することが証明されており、数値が完全でない場合は停止します。

例を示します:

for i in range(110, 130):
   print i, is_square(i)

出力:

110 False
111 False
112 False
113 False
114 False
115 False
116 False
117 False
118 False
119 False
120 True
121 True
122 False
123 False
124 False
125 True
126 False
127 False
128 False
129 True

上記のように、アルゴリズムは完全二乗を正しく識別します。

大きな整数の場合、浮動小数点の不正確さが著しくなり、誤った結果が生じる可能性があります。精度を確保するために、このタスクでは浮動小数点演算を使用しないことをお勧めします。

以上が数値が完全な平方であるかどうかを正確に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。