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

โปรแกรมตรวจสอบตัวเลขเป็นกำลังสองสมบูรณ์หรือไม่ไม่มีฟังก์ชัน sqrt ใน Python


สมมุติว่าเรามีจำนวน n เราต้องตรวจสอบว่า n เป็นจำนวนเต็มกำลังสองหรือไม่ เลขกำลังสองสมบูรณ์ k สามารถแสดงเป็น k =a * a สำหรับจำนวนเต็ม a เราต้องแก้ปัญหานี้โดยไม่ต้องใช้ฟังก์ชันสแควร์รูทในตัว

ดังนั้น หากอินพุตเท่ากับ n =121 ผลลัพธ์จะเป็น True เพราะ 121 =11*11

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

  • ถ้า n เท่ากับ 0 หรือ n เหมือนกับ 1 แล้ว

    • คืนค่า True

  • เริ่มต้น :=2

  • หยุด :=ชั้นของ n / 2

  • ขณะที่เริ่ม <=หยุด ทำ

    • temp :=รายการตัวเลขทั้งหมดตั้งแต่ต้นจนจบ

    • k :=องค์ประกอบตรงกลางของอุณหภูมิ

    • k_squared :=k * k

    • ถ้า k_squared เหมือนกับ n แล้ว

      • คืนค่า True

    • ถ้า k_squared> n แล้ว

      • start :=temp[0]

      • หยุด :=k - 1

    • มิฉะนั้น

      • เริ่มต้น :=k + 1

      • หยุด :=องค์ประกอบสุดท้ายของอุณหภูมิ

  • คืนค่าเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

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))

อินพุต

121

ผลลัพธ์

True