본문 바로가기

알고리즘/분류

에라토스테네의 체 //주석에 유념

void era() {
	arr[0] = -1;
	arr[1] = -1;

	for (ll i = 2; i <= n; ++i) {//long long 으로
		arr[i] = i;
	}

	//체 시작
	for (ll i = 2; i <= n; ++i) {//long long 으로
		if (arr[i] == i) {

			for (ll j = i + i; j <= n; j += i) {//j = i*i 오버플로우 발생 //long long 으로
				if (arr[j] == j) {
					arr[j] = i;
				}
			}
		}
	}

	//체에 있는 숫자 중복없이 배열에 담기
	for (int i = 0; i <= n; ++i) {//n값이 클 때 크기가 2배씩 커지는 '가변배열' 벡터보다 '고정된 크기'의 배열이 안정적. 
		if (arr[i] == i) {
			r[i] = i;
		}
	}
}

'알고리즘 > 분류' 카테고리의 다른 글

완전탐색  (0) 2020.02.28
LC"S"  (0) 2020.02.25
[에라토스테네스의 체] 나의 기본형  (0) 2020.02.06
[이진탐색 알고리즘] , [투 포인터스 알고리즘] 차이  (0) 2020.02.04
세그먼트 트리  (0) 2020.02.04