Bilangan Prima dengan Algoritma Sieve of Eratosthenes

Bilangan prima merupakan suatu bilangan khusus dimana bilangan tersebut tidak dapat hapis dibagi oleh bilangan manapun kecuali bilangan itu sendiri dan 1. Saat ini banyak algoritma yang dapat digunakan untuk menentukan suatu bilangan termasuk prima atau bukan. Salah satu algoritma tersebut adalah Sieve of Eratosthenes, dapat kita temukan penjelasannya di Wikipedia. Mungkin ini bukan algoritma yang tercepat, tapi setidaknya sudah cukup cepat dibanding jika menggunakan modulus.
Dan berikut ini contoh penerapan algoritma di atas dalam bahasa pemrograman PHP. Script ini sudah ditest untuk menampilkan bilangan prima dibawah 1.000.000 dan berhasil menampilkannya dalam waktu 3 detik.

view sourceprint?
01
02function bilangan_prima($limit) {
03 $prima = array();
04 for ($i=2; $i<=$limit; $i++)
05 $prima[$i] = true;
06 $akarLimit = (int)sqrt($limit);
07 for ($i=2; $i<=$akarLimit; $i++) {
08 if ($prima[$i]) {
09 for ($j=$i*$i; $j<=$limit; $j+=$i) {
10 $prima[$j] = false;
11 }
12 }
13 }
14 $i = 0;
15 foreach ($prima as $bilangan=>$status) {
16 if ($status) { echo "$bilangan ";$i++; }
17 }
18 echo "Jumlahnya:". $i;
19}
20 
21$start=mktime();
22bilangan_prima(1000000); //menampilkan bilangan prima dari 1 - 1 juta
23$finish=mktime();
24$result=$finish-$start;
25echo "Time: $result seconds";
26?>
Penjelasan Algoritma:
Misalkan kita hendak menemukan semua bilangan prima di antara 1 sampai suatu bilangan bulat n.
  1. Tulis semua bilangan, mulai dari 1 sampai n. Misalkan ini adalah daftar A.
  2. Buat suatu daftar yang masih kosong, sebut saja daftar B.
  3. Coret bilangan 1 dari daftar A.
  4. Lalu tulis 2 pada daftar B. Lalu coret 2 dan semua kelipatannya dari daftar A
  5. Bilangan pertama yang belum tercoret dari daftar A (misalnya 3) adalah bilangan prima. Tulis bilangan ini di daftar B, lalu coret bilangan ini dan semua kelipatannya dari daftar A.
  6. Ulangi langkah 4 sampai semua bilangan di daftar A sudah tercoret.
Setelah selesai, semua bilangan di daftar B adalah bilangan prima.
sumber:http://contohprogram.info/php/bilangan-prima-dengan-algoritma-sieve-of-eratosthenes.html

Komentar

Postingan populer dari blog ini

Memperbaiki Flashdisk Tidak bisa di Copy

Cara mudah setting DHCP server di Mikrotik

Langkah Mereset error ink cartridges are not installed properly (error E5)