Lompat ke isi

Tapis Eratosthenes

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Revisi sejak 23 Agustus 2026 03.35 oleh Maintenance script (bicara | kontrib) (Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28486613; atribusi sumber disertakan.)
(beda) ← Revisi sebelumnya | Revisi terkini (beda) | Revisi selanjutnya → (beda)

Tapis Eratosthenes adalah suatu cara untuk menemukan semua bilangan prima di antara 1 dan suatu angka n. Tapis ini ditemukan oleh Eratosthenes, seorang ilmuwan Yunani kuno. Cara ini merupakan cara paling sederhana dan paling cepat untuk menemukan bilangan prima, sebelum Tapis Atkin ditemukan pada tahun 2004. Tapis Atkin merupakan cara yang lebih cepat tetapi lebih rumit dibandingkan dengan Tapis Eratosthenes.

Langkah-langkah tapis Eratosthenes

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.

Tapis Eratosthenes dalam Pemrograman

Tapis Eratosthenes dapat dimanfaatkan dalam pemrograman. Sebuah program dapat menampilkan deretan bilangan prima yang ada di antara 1 sampai n dengan memanfaatkan ide tapis Eratosthenes. Berikut ini adalah sebuah potongan kode dalam bahasa pemrograman Java dan C yang mencetak bilangan prima di antara 1 sampai n=120.

int n=120; //batas atas n dapat diganti dengan bilangan bulat lainnya
boolean[] prima=new boolean[n+1];
for(int i=0; i<=n; i++)
	prima[i]=true;        //set seluruh array menjadi true
prima[0]=prima[1]=false;     //0 dan 1 bukan bil. prima
double akarN=Math.sqrt(n);      //akar kuadrat dari n
//coret bilangan yang bukan prima
for(int i=2; i<=akarN; i++) {
	if (prima[i]) {
	     for (int j=i*i; j<=n; j=j+i)
                 prima[j]=false;
	}
}
//tampilkan seluruh bilangan prima
for(int i=0; i<n; i++) {
	if (prima[i])
		System.out.print(i+ "\t");

Pranala luar


Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 28486613 (2025-11-14T09:49:04Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.