Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menentukan dengan Tepat sama ada Nombor ialah Segiempat Sempurna?

Bagaimana untuk Menentukan dengan Tepat sama ada Nombor ialah Segiempat Sempurna?

Barbara Streisand
Barbara Streisandasal
2024-11-08 19:54:021044semak imbas

How to Accurately Determine if a Number is a Perfect Square?

Mencari Kuasa Dua Sempurna: Kaedah Komprehensif

Menentukan sama ada nombor ialah kuasa dua sempurna mungkin kelihatan mudah, tetapi bergantung pada operasi titik terapung mungkin tidak boleh dipercayai. Untuk ketepatan, adalah penting untuk menggunakan pendekatan berasaskan integer seperti yang dibentangkan di bawah.

Algoritma ini memanfaatkan kaedah Babylon untuk pengiraan punca kuasa dua. Ia menganggarkan punca kuasa dua secara berulang dengan mengira purata anggaran semasa dan nombor dibahagikan dengan anggaran itu.

def is_square(apositiveint):
  x = apositiveint // 2
  seen = set([x])
  while x * x != apositiveint:
    x = (x + (apositiveint // x)) // 2
    if x in seen: return False
    seen.add(x)
  return True

Kaedah ini terbukti menumpu untuk sebarang integer positif dan berhenti jika nombor itu bukan sempurna segi empat sama, kerana gelung itu akan kekal selama-lamanya.

Berikut ialah contoh:

for i in range(110, 130):
   print i, is_square(i)

Output:

110 False
111 False
112 False
113 False
114 False
115 False
116 False
117 False
118 False
119 False
120 True
121 True
122 False
123 False
124 False
125 True
126 False
127 False
128 False
129 True

Seperti yang dilihat di atas, algoritma mengenal pasti petak sempurna dengan betul, seperti 120 dan 125, sementara tidak termasuk petak tidak sempurna seperti 111 dan 122.

Untuk integer besar, ketidaktepatan titik terapung boleh menjadi ketara, berpotensi membawa kepada keputusan yang salah. Untuk memastikan ketepatan, adalah dinasihatkan untuk mengelak daripada menggunakan operasi titik terapung untuk tugasan ini.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan dengan Tepat sama ada Nombor ialah Segiempat Sempurna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn