Mengendalikan Nombor Besar dalam PHP untuk Eksponenasi Modular
Eksponentasi modular ialah operasi penting dalam pelbagai aplikasi matematik, seperti Ujian Primaliti Fermat. Walau bagaimanapun, berurusan dengan nombor yang besar dalam PHP boleh memperkenalkan cabaran.
Jika anda mendarab dua nombor besar dalam PHP, ia secara automatik menghantar hasil ke apungan. Walaupun ini boleh menjadi mudah untuk operasi tujuan umum, ia menjadi isu apabila bekerja dengan nilai modular.
$x = 62574 * 62574; var_dump($x); // float(3915505476) ... correct var_dump($x % 104659); // int(-72945) ... unexpected
Pengendali modulo PHP mengembalikan hasil yang salah kerana jenis data apungan tidak mewakili integer besar dengan tepat.
Penyelesaian: Perpustakaan GMP
Untuk menyelesaikan isu ini, anda boleh gunakan sambungan GMP (GNU Multi-Precision Library) dalam PHP. GMP menyediakan fungsi dan jenis data yang direka khusus untuk bekerja dengan nombor yang besar.
Anda boleh memasang GMP menggunakan pengurus pakej komposer:
composer require gmp
Contoh:
use GMP; $x = GMP::mul(62574, 62574); var_dump($x); // gmp("3915505476") ... correct var_dump(GMP::mod($x, 104659)); // gmp("73714") ... correct
GMP menyediakan pelbagai fungsi untuk bekerja dengan nombor yang besar, termasuk operasi pendaraban, penambahan, perbandingan dan modulo. Fungsi ini memastikan hasil yang tepat untuk pengiraan yang paling meluas sekalipun.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Nombor Besar Dengan Tepat untuk Eksponensiasi Modular dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!