在Python中检查数字是否是完全平方数而不使用sqrt函数的程序
假设我们有一个数字n,我们必须检查是否n是一个完全平方数。完全平方数k可以表示为k = a * a,其中a是整数。我们必须在不使用内置平方根函数的情况下解决这个问题。
因此,如果输入为n = 121,则输出为True,因为121 = 11 * 11。
为了解决这个问题,我们将按照以下步骤进行 –
- 如果n与0相同或n与1相同,那么
- 返回True
- 开始:= 2
-
停止:= n / 2的地板
-
当开始<=停止时,执行
- temp:=从开始到停止的所有数字的列表
-
k:temp的中间元素
-
k_squared:= k * k
-
如果k_squared与n相同,则
- 返回True
- 如果k_squared > n,则
- 开始:= temp [0]
-
停止:= k-1
-
否则
- 开始:= k + 1
-
停止:= temp的最后一个元素
-
返回False
例子
让我们看下面的实现以获得更好的理解
def solve(n):
if n == 0 or n == 1:
return True
start = 2
stop = n // 2
while start <= stop:
temp = range(start, stop + 1)
k = temp[len(temp) // 2]
k_squared = k * k
if k_squared == n:
return True
if k_squared > n:
start = temp[0]
stop = k - 1
else:
start = k + 1
stop = temp[-1]
return False
n = 121
print(solve(n))
输入
121
输出
True