Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra số có phải là hình vuông hoàn hảo hay không khi không có hàm sqrt trong Python

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