[백업][가리사니] 소수 구하기 코드
java
이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.
public static int[] 소수(int max)
{
if (max < 2) { return new int[0]; }
int[] map = new int[max / 2 + 1];
map[0] = 2; // 2 를 세팅
int maxArraySize = 1;
for (int n = 3 ; n <= max ; n+=2)
{
map[maxArraySize++] = n;
}
// 배열 0번 2는 예외처리
int zeroCount = 0;
for (int i = 1 ; i < maxArraySize ; i++)
{
int div = map[i];
if (div == 0) { continue; }
// 3번도 예외처리
for (int j = 2 ; j < maxArraySize ; j++)
{
int target = map[j];
// 대상이 같거나 || 예외처리 결과인 0일 경우 뛰어넘는다.
if (target == div || target == 0)
{
continue;
}
else if (target % div == 0)
{
zeroCount++;
map[j] = 0;
}
}
}
int rv[] = new int[maxArraySize - zeroCount];
for (int i = 0, pos = 0 ; i < maxArraySize ; i++)
{
int num = map[i];
if (num != 0)
{
rv[pos++] = num;
}
}
return rv;
}