Giả sử chúng ta có một số n, chúng ta phải kiểm tra xem n có phải là một số bình phương hoàn hảo hay không. Một số vuông hoàn hảo k có thể được biểu diễn dưới dạng k =a * a với một số nguyên a. Chúng ta phải giải quyết vấn đề này mà không sử dụng hàm căn bậc hai được tích hợp sẵn.
Vì vậy, nếu đầu vào là n =121, thì đầu ra sẽ là True vì 121 =11 * 11.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
nếu n giống 0 hoặc n giống 1 thì
-
trả về True
-
-
bắt đầu:=2
-
stop:=tầng của n / 2
-
trong khi bắt đầu <=dừng, thực hiện
-
temp:=danh sách tất cả các số từ đầu đến dừng
-
k:=phần tử giữa của temp
-
k_squared:=k * k
-
nếu k_squared giống với n thì
-
trả về True
-
-
nếu k_squared> n, thì
-
start:=temp [0]
-
dừng lại:=k - 1
-
-
nếu không,
-
bắt đầu:=k + 1
-
stop:=phần tử cuối cùng của temp
-
-
-
trả về Sai
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn
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))
Đầu vào
121
Đầu ra
True