우선 출력 초과가 뜨는 이유는, arr에 메모리를 할당해 준 후 arr[a] ~ arr[b]까지만 초기화를 하는데 실제로 에라토스테네스의 체를 수행할 때는 arr[2]부터 모두 사용해야 하기 때문에 이 부분이 제대로 수행되지 않아 출력할 때 너무 많은 것들이 출력되었기 때문입니다. 1부터 b까지 모두 초기화를 해줘야 합니다.
그리고 arr의 크기가 b이면 arr[b]는 존재하지 않고 arr[b-1]까지만 사용할 수 있기 때문에 메모리 할당도 sizeof(int) * (b+1)만큼 해줘야 합니다.
ds020228 5년 전
어느부분에서 출력초과가 뜨는지 혹은 반례를 알 수 있을까요?