다음과 같이 코드 코드를 복사합니다.
/**
* @author jxqlovedn
* 에라토스테네스 소수의 체질법은 다음을 참조하세요: http://zh.wikipedia.org/zh-cn/에라토스테네스 소수의 체질법
*/
공개 클래스 AratosternyAlgorithm {
공개 정적 무효 getPrimes(int n) {
if(n < 2 || n > 1000000) // 최대값이 1백만으로 제한되는 이유는 JVM 메모리 제한 때문입니다. 물론 우회할 수 있는 다른 유연한 솔루션(예: 비트맵 방법)이 있습니다.
throw new IllegalArgumentException("입력 매개변수 n이 잘못되었습니다!");
int[] array = new int[n]; // 모든 초기 숫자가 소수이고 특정 숫자가 소수라고 가정하면 그 값은 0입니다. 배열[0]은 0입니다.
array[0] = 1; // 0은 소수가 아닙니다.
array[1] = 1; // 1은 소수가 아닙니다.
//다음은 심사의 핵심 과정이다.
for(int i = 2; i < Math.sqrt(n);i++) { //가장 작은 소수 2부터 시작
if(배열[i] == 0) {
for(int j = i*i; j < n; j += i) {
array[j] = 1; // 이 위치를 소수가 아닌 숫자로 표시합니다.
}
}
}
//n 내의 모든 소수를 인쇄하고 행당 10개 출력
System.out.println(n + "안에 있는 소수는 다음과 같습니다: ");
int count = 0; //현재 출력되는 소수의 개수
int rowLength = 10; // 각 행에 출력되는 소수의 개수
for(int i = 0; i < array.length; i++) {
if(배열[i] == 0) {
if(count % rowLength == 0 && count != 0) {
System.out.println();
}
카운트++;
System.out.print(i + "/t");
}
}
}
공개 정적 무효 메인(String[] args) {
getPrimes(99999);
}
}