책 내용 질문하기
1권 192페이지 4번 빈칸
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
192
조회수
159
작성일
2019-10-07
작성자
탈퇴*원
첨부파일
왜 m=m+i가 아니라 m=m+a[i]로 쓰는 거죠? A[i]의 값이 이미 0이 아닌 것으로 판명나서 m=i를 적용하고 15번인 a[m]에서 그 값을 모두 0으로 바꾸는 것을 반복하는데, 굳이 a[i]를 왜 쓰는 거죠?
답변
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으로 초기화되어 버립니다.

 

행복한 하루되세요 :)

  • 관리자
    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으로 초기화되어 버립니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.