안녕하세요 길벗수험서 운영팀입니다.
값을 직접 넣어 확인해보면 쉽습니다.
m=m+a[i], a[m]=0 을 하는 것은 배수의 해당하는 수들을 소수에서 제외하기 위해 하는 작업입니다.
하지만 배열 a에는 +1된 값들이 저장되어 있죠. (예: a[1]=2, a[2]=3, a[3]=4 ...)
이 때 배수를 적용하기 위해서는 a[i]의 값을 더하면서 0으로 초기화해야하는데, 만약 -1의 값인 i를 더하게 되는 경우 배수가 아닌 잘못된 수들이 0으로 초기화되는 상황이 발생합니다.
a[2]=3이 해당 프로세스에 도달했다고 가정하죠.
이때 초기화 되야 하는 것들은, a[5]=6, a[8]=9 ... 등이 되어야하는데, i를 더해가며 초기화를 하게 되면
a[4]=5, a[6]=7 ... 이런 수들(소수가 포함되어있을지 모르는 수들)이 0으로 초기화되어 버립니다.
행복한 하루되세요 :)
-
관리자2019-10-08 16:12:47
안녕하세요 길벗수험서 운영팀입니다.
값을 직접 넣어 확인해보면 쉽습니다.
m=m+a[i], a[m]=0 을 하는 것은 배수의 해당하는 수들을 소수에서 제외하기 위해 하는 작업입니다.
하지만 배열 a에는 +1된 값들이 저장되어 있죠. (예: a[1]=2, a[2]=3, a[3]=4 ...)
이 때 배수를 적용하기 위해서는 a[i]의 값을 더하면서 0으로 초기화해야하는데, 만약 -1의 값인 i를 더하게 되는 경우 배수가 아닌 잘못된 수들이 0으로 초기화되는 상황이 발생합니다.
a[2]=3이 해당 프로세스에 도달했다고 가정하죠.
이때 초기화 되야 하는 것들은, a[5]=6, a[8]=9 ... 등이 되어야하는데, i를 더해가며 초기화를 하게 되면
a[4]=5, a[6]=7 ... 이런 수들(소수가 포함되어있을지 모르는 수들)이 0으로 초기화되어 버립니다.
행복한 하루되세요 :)