책 내용 질문하기
정보처리기사 소인수분해
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
189
조회수
65
작성일
2018-06-20
작성자
탈퇴*원
첨부파일

안녕하세요. 정보처리기사 실기 2017년도 책 알고리즘부분 189쪽 질문드립니다.

소인수분해는 어떤 수 x를 2~x의 제곱근까지 나누면서

나누어 떨어지면 그 수를 소인수로 저장하고 몫을 x로 두고 다시 2부터 x의제곱근으로 나누는 과정을 반복하면서

제수가 x의제곱근보다 커지면 x자체가 소인수가 되고,

x와 마지막으로 구한 소인수가 같을 경우 종료되는 알고리즘으로 책에 나와있는데요.

189쪽 순서도와 190쪽 소스코드에서는

소인수를 구한 뒤 B=mok 과정 이후에 d를 초기화하지 않고 사용하고 있는데

b가 몫으로 다시 설정되면 나누는 수인 d를 2로 초기화해야하는게 맞지않나 싶어 문의드립니다.

위 과정대로라면 16번 빈칸에서 화살표는 d=2 위로 가고

소스코드에선 d=2부분이 5번라인 위에 와야되지 않나 싶어서요!

답변 부탁드립니다.

답변
2018-06-21 09:11:08

안녕하세요.

D를 2로 초기에 B 값을 나눴을 때 나머지가 0인 경우는 짝수인 경우인데,

2로 나눠진 짝수는 이후 홀수의 몫을 갖게 됩니다.

그러므로 이 값을 다시 2부터 나눠도 나머지는 0이 아니므로 무조건 D는 +1이 되게 됩니다.

이러한 과정이 진행되므로 B를 2로 초기화하는 과정을 처음에 한 번만 수행해도 결과가 동일합니다.

하지만 교재의 알고리즘의 이해에서 언급한 소인수 분해 과정에 맞게 순서도를 연계하려면

질문 주신것처럼 D를 2로 초기화하는 과정이 반복문 안쪽으로 들어가는 것이 맞습니다.

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

  • *
    2018-06-21 09:11:08

    안녕하세요.

    D를 2로 초기에 B 값을 나눴을 때 나머지가 0인 경우는 짝수인 경우인데,

    2로 나눠진 짝수는 이후 홀수의 몫을 갖게 됩니다.

    그러므로 이 값을 다시 2부터 나눠도 나머지는 0이 아니므로 무조건 D는 +1이 되게 됩니다.

    이러한 과정이 진행되므로 B를 2로 초기화하는 과정을 처음에 한 번만 수행해도 결과가 동일합니다.

    하지만 교재의 알고리즘의 이해에서 언급한 소인수 분해 과정에 맞게 순서도를 연계하려면

    질문 주신것처럼 D를 2로 초기화하는 과정이 반복문 안쪽으로 들어가는 것이 맞습니다.

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

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