책 내용 질문하기
2차원 배열 직각삼각형형태에 소수15개까지 알고리즘중...
도서
[2014] 정보처리기사 실기(산업기사 포함)
페이지
215
조회수
355
작성일
2014-03-31
작성자
첨부파일

(알고리즘 설명)

스타트하고
tmp(15), A(5,5)
tmp(1)=2, tmp(2)=3
cnt=2
P=5
Q=2
mok=p/tmp(Q)<----------이알고리즘이 이해가 가질 않습니다.
저는 저기 Q=2이길래 tmp(Q)에 2를 대입하여 초기에 있는 tmp(2)="3"으로 계산했는데 그냥 Q값인 2로 나눠야 디버깅이 되더라구요.
mok=P/Q가 아닌 mok=p/tmp(Q)로 작성된 의미와 왜 대입하지않고 그냥 Q값으로 계산해야 되는지 궁금합니다.
답변
2014-04-01 09:29:02

안녕하세요.

이 알고리즘은 2, 3, 5, 7, 11, 13, 17 .... 의 소수를 배열에 저장하는 알고리즘입니다.

초기값으로 2와 3은 이미 배열에 저장한 상태로 진행을 합니다.

결국 반복문을 통해 5, 7, 11, 13, 17 ... 의 소수를 배열에 저장해야 합니다.

바깥쪽 P 반복문은 소수가 될 대상들을 순차적으로 검사하기 위해 값을 증가하는 반복문인데, 이미 2와 3은 저장해 두었으니 그 다음 소수인 5부터 시작을 하는 것이고, 2를 제외한 짝수는 소수가 아니므로 대상을 홀수만 지정하기 위해 2씩 증가한 값을 대상으로 합니다.

그러면 대상은 5, 7, 9, 11, 13, 15, 17, 19, ... 와 같이 홀수만 되는 것이죠. 반복문 자체에서 홀수만을 대상으로 하도록 했으므로 굳이 2로 나눠 나머지가 0인 것은 소수 대상에서 제외할 필요가 없는 것이죠.

그럼 반복문 P에 의해 산출된 위 값들 중에서 소수를 판별하기 위해 나눠봐야 하는데, 이미 소수로 판면된 숫자들로 나눠서 나머지가 0이면 그것은 소수가 아닌 것이죠.

그래서 안쪽 Q 반복문을 2부터 지정하여 이미 저장된 배열의 값을 이용하여 나눠보는 것입니다.

Q(2)는 3이죠. 그럼 3으로 소수 대상을 나눠 0이 되면 그 값은 소수가 아닙니다.

A(3)는 5죠. 그럼 5로 소수 대상을 나눠 0이 되면 그 값은 소수가 아닙니다.

이와 같이 진행하여 나머지 소수를 판별한 후 그 값을 배열에 저장합니다.

오늘도 즐거운 하루 되세요.

"
  • *
    2014-04-01 09:29:02

    안녕하세요.

    이 알고리즘은 2, 3, 5, 7, 11, 13, 17 .... 의 소수를 배열에 저장하는 알고리즘입니다.

    초기값으로 2와 3은 이미 배열에 저장한 상태로 진행을 합니다.

    결국 반복문을 통해 5, 7, 11, 13, 17 ... 의 소수를 배열에 저장해야 합니다.

    바깥쪽 P 반복문은 소수가 될 대상들을 순차적으로 검사하기 위해 값을 증가하는 반복문인데, 이미 2와 3은 저장해 두었으니 그 다음 소수인 5부터 시작을 하는 것이고, 2를 제외한 짝수는 소수가 아니므로 대상을 홀수만 지정하기 위해 2씩 증가한 값을 대상으로 합니다.

    그러면 대상은 5, 7, 9, 11, 13, 15, 17, 19, ... 와 같이 홀수만 되는 것이죠. 반복문 자체에서 홀수만을 대상으로 하도록 했으므로 굳이 2로 나눠 나머지가 0인 것은 소수 대상에서 제외할 필요가 없는 것이죠.

    그럼 반복문 P에 의해 산출된 위 값들 중에서 소수를 판별하기 위해 나눠봐야 하는데, 이미 소수로 판면된 숫자들로 나눠서 나머지가 0이면 그것은 소수가 아닌 것이죠.

    그래서 안쪽 Q 반복문을 2부터 지정하여 이미 저장된 배열의 값을 이용하여 나눠보는 것입니다.

    Q(2)는 3이죠. 그럼 3으로 소수 대상을 나눠 0이 되면 그 값은 소수가 아닙니다.

    A(3)는 5죠. 그럼 5로 소수 대상을 나눠 0이 되면 그 값은 소수가 아닙니다.

    이와 같이 진행하여 나머지 소수를 판별한 후 그 값을 배열에 저장합니다.

    오늘도 즐거운 하루 되세요.

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