Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencipta Penjana Nombor Perdana Infinite yang Cekap dalam Python?
Tugasnya ialah untuk mencipta penjana nombor perdana tak terhingga yang cekap dalam Python. Istilah utama di sini ialah "INFINITE", membayangkan bahawa penjana boleh menghasilkan aliran nombor perdana yang tidak berkesudahan tanpa mengetahui bilangan yang akan digunakan.
The kod yang disediakan menawarkan tiga fungsi Sieve yang dioptimumkan: erat2, erat2a dan erat3. Setiap fungsi secara beransur-ansur bertambah baik berbanding fungsi sebelumnya dari segi kelajuan dan kecekapan.
Fungsi erat2a ialah pengubahsuaian fungsi erat2, yang tidak disertakan di sini. Dengan mengoptimumkan semakan keganjilan dan mengurangkan bilangan langkah yang diambil untuk calon, erat2a mempercepatkan penjanaan sebanyak 20-25%.
erat3 meningkatkan lagi erat2a dengan memanfaatkan fakta bahawa modulo 30 , semua nombor perdana kecuali 2, 3, dan 5 menghasilkan hanya lapan nombor (1, 7, 11, 13, 17, 19, 23, 29). Ini membolehkan erat3 menapis nombor ganjil bukan calon dengan lebih cekap, menghasilkan peningkatan kelajuan 35-40%.
Tanda aras pada konfigurasi perkakasan yang berbeza menunjukkan peningkatan prestasi:
Pada pelayan Atom 330 Ubuntu 9.10, erat3 mengatasi prestasi erat2 dan erat2a pada Python 2 dan 3.
Pada pelayan utama AMD Geode LX Gentoo, erat3 sekali lagi menunjukkan peningkatan prestasi yang ketara, mengatasi prestasi lain pada Python 2 dan 3.
Pengoptimuman ini dalam fungsi Ayak memberikan kelebihan yang ketara dalam menjana nombor perdana dengan cekap, menjadikannya sesuai untuk pelbagai matematik dan pengiraan. aplikasi.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Penjana Nombor Perdana Infinite yang Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!