Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menentukan dengan Tepat sama ada Nombor ialah Segiempat Sempurna?
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!