Copy kode kodenya sebagai berikut:
/**
* @penulis jxqlovedn
* Metode saringan bilangan prima Eratosthenes, silakan merujuk ke: http://zh.wikipedia.org/zh-cn/Metode saringan bilangan prima Eratosthenes
*/
Algoritma Aratosterny kelas publik {
public static void getPrimes(int n) {
if(n < 2 || n > 1000000) // Alasan mengapa nilai maksimum dibatasi hingga 1 juta adalah karena keterbatasan memori JVM. Tentu saja, ada solusi fleksibel lain yang dapat dilewati (seperti metode bitmap)
throw new IllegalArgumentException("Parameter masukan n salah!");
int[] array = new int[n]; // Asumsikan semua bilangan awal adalah bilangan prima, dan suatu bilangan tertentu adalah bilangan prima, maka nilainya adalah 0; susunan[0] adalah 0
array[0] = 1; // 0 bukan bilangan prima
array[1] = 1; // 1 bukan bilangan prima
//Berikut ini adalah proses inti penyaringan
for(int i = 2; i < Math.sqrt(n);i++) { //Mulai dari bilangan prima terkecil 2
jika(susunan[i] == 0) {
untuk(int j = i*i; j < n; j += i) {
array[j] = 1; // Tandai posisi ini sebagai bilangan bukan prima
}
}
}
//Cetak semua bilangan prima dalam n, 10 keluaran per baris
System.out.println(n + "Bilangan prima di dalamnya adalah sebagai berikut: ");
int count = 0; //Jumlah bilangan prima yang dihasilkan saat ini
int rowLength = 10; // Jumlah bilangan prima yang dihasilkan pada setiap baris
for(int i = 0; i < array.panjang; i++) {
jika(susunan[i] == 0) {
if(hitung % Panjang baris == 0 && hitung != 0) {
Sistem.keluar.println();
}
hitung++;
Sistem.keluar.cetak(i + "/t");
}
}
}
public static void main(String[] args) {
dapatkanPrime(99999);
}
}