Mencari Akar Kuasa Dua Integer dalam Python
Python menyediakan beberapa cara untuk mengira punca kuasa dua nombor. Walau bagaimanapun, tiada satu pun daripada kaedah ini secara langsung mengembalikan punca kuasa dua integer tanpa anggaran atau pengecualian.
Satu pendekatan, seperti yang dicadangkan dalam coretan kod awal, ialah menggunakan fungsi math.sqrt() dan bulatkan hasilnya kepada integer terdekat. Walau bagaimanapun, pendekatan ini mungkin tidak tepat untuk integer yang besar.
Kaedah yang lebih tepat melibatkan penggunaan kaedah Newton, iaitu teknik lelaran untuk mencari punca persamaan. Fungsi Python berikut melaksanakan kaedah Newton untuk punca kuasa dua integer:
<code class="python">def isqrt(n): x = n y = (x + 1) // 2 while y < x: x = y y = (x + n // x) // 2 return x</code>
Fungsi ini memulakan dua pembolehubah, x dan y, dan mengemas kininya secara berulang sehingga penumpuan. x mewakili anggaran terbaik punca kuasa dua integer, manakala y ialah anggaran kemas kini yang menggabungkan kedua-dua nilai x dan pembahagian integer n dengan x. Lelaran berhenti apabila y menjadi kurang daripada x, menunjukkan bahawa pemurnian selanjutnya tidak diperlukan.
Nilai yang dikembalikan bagi isqrt() ialah integer terbesar yang kuasa duanya tidak melebihi n. Untuk mengesahkan sama ada hasilnya ialah punca kuasa dua integer tepat, darabkan hasilnya dengan dirinya sendiri dan bandingkan dengan n. Ambil perhatian bahawa fungsi ini mengendalikan petak tidak sempurna mengikut reka bentuk, tidak menimbulkan pengecualian.
Walaupun beberapa algoritma lain wujud untuk mengira punca kuasa dua integer, kaedah Newton secara amnya dianggap menawarkan keseimbangan ketepatan, kelajuan dan kesederhanaan.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Akar Kuasa Dua Integer Nombor dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!