Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Sqrt(x) ใน Python


สมมติว่าเรามีจำนวน x และ x เป็นจำนวนไม่เป็นลบ เราต้องหาสแควร์รูทของ x โดยไม่ต้องใช้ฟังก์ชันไลบรารี ดังนั้นเราต้องสร้างฟังก์ชันของเราเองเพื่อประเมิน sqrt(x) ในฟังก์ชันนี้ ตัวเลขทศนิยมของเอาต์พุตจะถูกตัดออก

สมมติว่าค่าของ x คือ 4 ดังนั้นผลลัพธ์จะเป็น 2 หาก x เป็น 8 ดังนั้นผลลัพธ์จะเป็น 2 ด้วย เนื่องจาก sqrt(8) คือ 2.82842 แต่เราจะเอาเฉพาะส่วนจำนวนเต็มเท่านั้น

ในการแก้ปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้ -

  • เริ่มต้น l =1 และ h =x + 1 คำตอบ =0
  • ในขณะที่ h> l ทำ
    • กลาง =(h + l)/2
    • ถ้า mid*mid <=x แล้ว l :=mid + 1, answer =mid
    • มิฉะนั้น h =กลาง
  • ส่งคืนคำตอบ

มาดูการใช้งานกันให้เกิดความเข้าใจกันมากขึ้น

ตัวอย่าง (Python)

class Solution(object):
   def mySqrt(self, x):
      """
      :type x: int
      :rtype: int
      """
      low = 1
      high = x+1
      ans = 0
      while high>low:
         mid = (high+low)//2
         print(low,mid,high)
         if mid*mid<=x:
            low = mid+1
            ans = mid
         else:
            high = mid
      return ans
ob1 = Solution()
print(ob1.mySqrt(4))
print(ob1.mySqrt(16))
print(ob1.mySqrt(7))
print(ob1.mySqrt(15))

อินพุต

print(ob1.mySqrt(4))
print(ob1.mySqrt(16))
print(ob1.mySqrt(7))
print(ob1.mySqrt(15))

ผลลัพธ์

2
4
2
3