책 내용 질문하기
2020 정보처리산업기사 실기 1권 페이지 193
도서
2020 시나공 정보처리산업기사 실기 [기본서]
페이지
193
조회수
179
작성일
2020-07-22
작성자
탈퇴*원
첨부파일

안녕하세요 답변 달아주시느라 고생 많으십니다

다름이 아니라 이 알고리즘에서 a[i] 가 어떻게 짝수를 0으로 판별하는지 몇 번을 봐도 이해가 가지 않아

질문드렸습니다

답변
2020-07-22 17:48:05

안녕하세요 길벗수험서 운영팀입니다.

 

먼저 해당 알고리즘은 각 수의 배수를 싸그리 0으로 치환해버리면서 소수를 구하는 알고리즘입니다.

a가 b의 배수라는 것은, b가 a의 약수라는 뜻이고, 약수를 가진 수라는 것은 소수가 아님을 의미하니까요. (b는 2 이상)

 

코드에서는

a[0]=2, a[1]=3, a[2]=4, a[3]=5, a[4]=6 .... a[98]=100  이렇게 저장됩니다.

 

배열의 위치값을 가리키는 i가 처음 0일 때,

12. m = 0

반복 시작

13. m = m + 2   - a[i]가 2이므로

15 a[2] = 0

반복 끝

 

즉, a[0]부터 위치가 2씩 증가하면서 배열에 저장된 값을 0으로 치환해버리죠.

결국 4, 6, 8, 10, 12, ...,  100을 저장한 2의 배수(짝수)가 0으로 바뀌게 되는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-07-22 17:48:05

    안녕하세요 길벗수험서 운영팀입니다.

     

    먼저 해당 알고리즘은 각 수의 배수를 싸그리 0으로 치환해버리면서 소수를 구하는 알고리즘입니다.

    a가 b의 배수라는 것은, b가 a의 약수라는 뜻이고, 약수를 가진 수라는 것은 소수가 아님을 의미하니까요. (b는 2 이상)

     

    코드에서는

    a[0]=2, a[1]=3, a[2]=4, a[3]=5, a[4]=6 .... a[98]=100  이렇게 저장됩니다.

     

    배열의 위치값을 가리키는 i가 처음 0일 때,

    12. m = 0

    반복 시작

    13. m = m + 2   - a[i]가 2이므로

    15 a[2] = 0

    반복 끝

     

    즉, a[0]부터 위치가 2씩 증가하면서 배열에 저장된 값을 0으로 치환해버리죠.

    결국 4, 6, 8, 10, 12, ...,  100을 저장한 2의 배수(짝수)가 0으로 바뀌게 되는 것입니다.

     

    행복한 하루되세요 :)

  • 관리자
    2020-07-22 19:32:25

    안녕하세요 길벗수험서 운영팀입니다.

     

    a[m]의 값을 0으로 치환하는데, m의 값은 a[i]의 값 즉 2만큼 씩 증가합니다.

    즉 치환되는 배열의 요소는

    a[2], a[4], a[6], a[8], ... a[98]이 되는 것이죠. 이 배열에는

    4, 6, 8, 10, ... 100이 저장되어 있고요.

     

    이것이 첫회입니다.

    2와 3은 코드의 알고리즘 상 초기화될 일이 있을 수 없죠.

    이건 코드를 한 줄 씩 디버깅해 가시면서 각 변수와 배열의 값 변화를 추적해보시는 것을 권해드립니다.

     

    소수를 구하는 과정은 앞서 설명드린대로입니다.

    2부터 98까지 각 수의 배수를 0으로 초기화한다. 라는 것은 약수를 가진 모든 수를 소수에서 제외한다는 뜻으로, 약수를 가지지 않았다는 것은 소수라는 의미가 되죠.

    소수 : 1과 자기수 외의 약수가 존재하지 않음

    (191쪽의 알고리즘의 이해를 다시 한 번 정독해보세요.)

     

    행복한 하루되세요 :)

  • *
    2020-07-22 18:18:43
    네 그러면 2, 3, 4, 다 0이 돼야 하는 거 아닌가요..? 소수는 어떤 과정으로 0이 안 되는 건 가요 ㅠㅠ 친철하신 답변 감사드립니다!
· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.