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, answer = 0
  • while h > l:
    • mid = (h + l) / 2
    • ถ้า mid * mid <= x ให้ l := mid + 1, answer = mid
    • มิฉะนั้น h = mid
  • คืนค่า answer

ตัวอย่าง (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