# 判断一个自然数是否是某个数的平方
""""直接计算法"""
def isPower1(n):
if n<=0:
print(n+"不是自然数")
return False
i = 1
while i<n:
m = i*i
if m==n:
return True
elif m>n:
return False
i += 1
return False
"""二分查找法"""
def isPower2(n):
low = 1
high = n
while low<high:
mid = (low+high)//2
power = mid*mid
# 接着在1-mid-1区间查找
if power>n:
high = mid-1
# 接着在mid+1到n区间内查找
elif power<n:
low = mid+1
else:
return True
return False
"""减法运算法"""
def isPower(n):
minus=1
while n>0:
n = n - minus
# n是某个数的平方
if n==0:
return True
# n不是某个数的平方
elif n<0:
return False
# 每次减数都加2
else:
minus += 2
return False
if __name__=="__main__":
n1 = 15
n2 = 16
if isPower(n1):
print(str(n1)+"是某个自然数的平方")
else:
print(str(n1)+"不是某个自然数的平方")
if isPower(n2):
print(str(n2)+"是某个自然数的平方")
else:
print(str(n2)+"不是某个自然数的平方")