a
2 つの整数とが与えられた場合、 のようなb
別の整数があるかどうかをテストする効率的な方法はありますか?n
a ≤ n2 < b
を知る必要はありません。そのようなものがn
少なくとも 1 つ存在するかどうかだけです。そのため、区間内の数値の平方根を計算することは避けn
たいと考えています。
個々の整数が完全な二乗であるかどうかをテストする方が平方根を計算するよりも高速ですが、範囲が大きくなる可能性があるため、範囲内のすべての数値に対してこのテストを実行することは避けたいと思います。
例:
intervalContainsSquare(2, 3)
=>偽intervalContainsSquare(5, 9)
=> false (注: 9 はこの範囲外です)intervalContainsSquare(9, 9)
=> false (この間隔は空です)intervalContainsSquare(4, 9)
=> true (4 がこの区間内にある)intervalContainsSquare(5, 16)
=> true (9 がこの区間内にある)intervalContainsSquare(1, 10)
=> true (1、4、9 はすべてこの間隔内にある)