Copiez le code comme suit :
/**
* @auteur jxqlovedn
* Méthode de tamisage des nombres premiers d'Eratosthène, veuillez vous référer à : http://zh.wikipedia.org/zh-cn/Méthode de tamisage des nombres premiers d'Eratosthène
*/
classe publique AratosternyAlgorithm {
public static void getPrimes(int n) {
if(n < 2 || n > 1000000) // La raison pour laquelle la valeur maximale est limitée à 1 million est due aux limitations de la mémoire JVM. Bien sûr, il existe d'autres solutions flexibles qui peuvent être contournées (telles que la méthode bitmap).
throw new IllegalArgumentException("Le paramètre d'entrée n est incorrect!");
int[] array = new int[n]; // Supposons que tous les nombres initiaux soient des nombres premiers et qu'un certain nombre soit un nombre premier, alors sa valeur est 0, par exemple, si le premier nombre est un nombre premier, alors tableau[0] est 0
array[0] = 1; // 0 n'est pas un nombre premier
array[1] = 1; // 1 n'est pas un nombre premier
//Ce qui suit est le processus principal de sélection
for(int i = 2; i < Math.sqrt(n);i++) { //Commencer par le plus petit nombre premier 2
si(tableau[i] == 0) {
pour(int j = i*i; j < n; j += i) {
array[j] = 1; // Marque cette position comme un nombre non premier
}
}
}
//Imprime tous les nombres premiers dans n, 10 sorties par ligne
System.out.println(n + "Les nombres premiers contenus sont les suivants : ");
int count = 0; //Le nombre de nombres premiers actuellement générés
int rowLength = 10; // Nombre de nombres premiers affichés dans chaque ligne
for(int i = 0; i < array.length; i++) {
si(tableau[i] == 0) {
if(count % rowLength == 0 && count != 0) {
System.out.println();
}
compte++;
System.out.print(i + "/t");
}
}
}
public static void main (String[] arguments) {
getPrimes(99999);
}
}