একটি সংখ্যা n দেওয়া আছে। n কি পারফেক্ট স্কোয়ার (কোনো ইন্টিজারের বর্গ) কিনা চেক করুন। বিল্ট-ইন sqrt ফাংশন ব্যবহার না করে।
উদাহরণ
n = 121 → আউটপুট: True (১১×১১ = ১২১)
এলগরিদম (বাইনারি সার্চ)
- যদি
n == 0 or n == 1:True start := 2, stop := n//2while start <= stop:mid := (start + stop) // 2mid_sq := mid * mid- যদি
mid_sq == n:True - যদি
mid_sq > n:stop := mid - 1 - অন্যথায়:
start := mid + 1
Falseরিটার্ন করুন।
পাইথন কোড
def solve(n):
if n == 0 or n == 1:
return True
start = 2
stop = n // 2
while start <= stop:
mid = (start + stop) // 2
mid_sq = mid * mid
if mid_sq == n:
return True
if mid_sq > n:
stop = mid - 1
else:
start = mid + 1
return False
n = 121
print(solve(n)) # আউটপুট: True
ইনপুট / আউটপুট
121 True