如何判断一个自然数是否是某个数的平方:设计一个算法,判断给定的一个数n是否是某个数的平方,不能使用开方运算
1 直接计算法
def ispower(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
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)+"不是某个自然数的平方")
结果
15不是某个自然数的平方
16是某个自然数的平方
Process finished with exit code 0
2 二分查找法
def ispower(n):
low =1
high = n
while low<high:
mid = (low+high)//2
power = mid*mid
if power>n:
high = mid-1
elif power<n:
low = mid+1
else:
return True
return False
if __name__=="__main__":
n1 = 36
n2 = 33
if ispower(n1):
print(str(n1)+"是某个自然数的平方")
else:
print(str(n1)+"不是某个自然数的平方")
if ispower(n2):
print(str(n2)+"是某个自然数的平方")
else:
print(str(n2)+"不是某个自然数的平方")
结果
36是某个自然数的平方
33不是某个自然数的平方
Process finished with exit code 0