Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencari Akar Kuadrat Integer dalam Python: Kaedah Mana Yang Terbaik?

Bagaimana untuk Mencari Akar Kuadrat Integer dalam Python: Kaedah Mana Yang Terbaik?

DDD
DDDasal
2024-10-28 06:03:32595semak imbas

How to Find Integer Square Roots in Python: Which Method is Best?

Mengira Punca Kuasa Dua Integer dalam Python

Dalam Python, mencari punca kuasa dua integer yang tepat boleh menjadi satu cabaran. Walau bagaimanapun, terdapat beberapa kaedah yang tersedia untuk tugasan ini.

Satu pendekatan mudah ialah menggunakan kaedah Newton, yang secara berulang memperhalusi anggarannya bagi punca kuasa dua:

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

Kaedah ini mengira dengan tepat punca kuasa dua integer terbesar, yang kemudiannya boleh disahkan dengan mendarabnya dengan sendirinya untuk menyemak sama ada ia sepadan dengan nombor input.

Kaedah alternatif ialah menggunakan pembahagian integer untuk menyemak petak sempurna secara berulang:

<code class="python">def isqrt2(n):
    i = 1
    while i * i <= n:
        i += 1
    return i - 1</code>

Kaedah ini mempunyai struktur yang lebih ringkas tetapi secara amnya lebih perlahan daripada kaedah Newton untuk integer besar.

Akhir sekali, untuk Python versi 3.8 dan kemudian, modul matematik menyediakan fungsi isqrt terbina dalam yang mengira tepat punca kuasa dua integer dengan cekap.

<code class="python">from math import isqrt

x = isqrt(49)  # returns 7</code>

Dengan memilih kaedah yang sesuai berdasarkan kecekapan yang diingini dan versi Python, anda boleh mencari punca kuasa dua integer dengan tepat dalam pelbagai senario.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Akar Kuadrat Integer dalam Python: Kaedah Mana Yang Terbaik?. 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