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.

<?php
function bilangan_prima($limit) {
 $prima = array();
 for ($i=2; $i<=$limit; $i++)
 $prima[$i] = true;
 $akarLimit = (int)sqrt($limit);
 for ($i=2; $i<=$akarLimit; $i++) {
 if ($prima[$i]) {
 for ($j=$i*$i; $j<=$limit; $j+=$i) {
 $prima[$j] = false;
 }
 }
 }
 $i = 0;
 foreach ($prima as $bilangan=>$status) {
 if ($status) { echo "$bilangan ";$i++; }
 }
 echo "Jumlahnya:". $i;
}

$start=mktime();
bilangan_prima(1000000); //menampilkan bilangan prima dari 1 - 1 juta
$finish=mktime();
$result=$finish-$start;
echo "Time: $result seconds";
?>

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.

Baca Juga:

  1. Algoritma Tercepat Mencetak Bilangan Prima
  2. Bilangan Prima Terbesar

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this post.
Loading ... Loading ...
PHP

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

6 Responses to “Bilangan Prima dengan Algoritma Sieve of Eratosthenes”

Leave Comment

(required)

(required)


// Place This Code At The End Or After All Ad Zone Div Created