안녕하세요. 정보처리 기사 실기를 대비해 시나공으로 공부중에 있습니다.
71쪽 소인수 분해 알고리즘 플로차트를 보는중에
순서도가 잘못된게 아닌지 궁금해서 문의드립니다.
상단 가로 1번을 보면 K=2 로 초기화하는 부분이 있습니다.
제곱근을 나누기 위해 1씩 커지는 값으로 알고 있는데
의문점은 그 밑의 화살표 입니다.
가로 4번을 보면 B=MOK 과 같이 기존 B값에 MOK을 대입하고
다시 제곱근을 구해 K로 나누는 부분이 있습니다.
다만 화살표가 K=2 초기화 되는 밑의 부분에 있는데
이렇게 되면 B의값을 이미 증가가된 K로 나누게 되지않나요?
제가 생각하기에 저 화살표가 K=2의 위에 있어야
B=MOK된 값을 다시 2부터 나눌수 있지 않을까 하는데...
혹시 제가 잘못 생각하거나 이해를 못하는 부분이 있다면 답변 부탁드리겠습니다.
좀더 쉽게 말씀드리기 위해 그림파일 첨부합니다.
그럼 행복한 하루되세요.
안녕하세요.
4번 동그라미는 피제수를 2부터 나누기 위해 D를 초기화되는 부분으로
소인수로 분해할 B가 소수라면 즉 NMG가 0이 아니라면 10번 동그라미 과정에서 NO가 되어 D가 증가됩니다.
하지만 소수가 아니라면 NMG가 0이 되어 소인수 분해되는 과정이 진행되는데,
예를 들어 50을 소인수 할 때 먼저 2로 나눈 나머지가 0이므로 소인수 분해 값으로 A배열에 2가 저장된 후
몫인 25가 B에 저장됩니다. 이때 아직 D가 2이므로 다시 D를 초기화할 필요없이 다음 값인 25(B)를 D로 나누게 되므로 결국 2부터 나누게 되는 것이죠.
25를 나누는 과정에서 나머지가 0이 아니므로 D가 2~5까지 증가되면서 진행됩니다. D가 5일 때 나머지가 0이 되므로 A배열에 5가 저장된 후 몫인 5가 B에 저장됩니다. 이후 E, 즉 현재 몫인 5의 제곱근이 2인데 이는 현재 D 값보다 2작으므로 B 자체가 소인수가 되어 7번 동그라미 과정을 거친 후 A배열에 5가 저장되어 최종적으로 2, 5, 5의 소인수 분해 과정이 완료됩니다.
오늘도 즐거운 하루 되세요.
"-
*2014-05-28 09:41:19
안녕하세요.
4번 동그라미는 피제수를 2부터 나누기 위해 D를 초기화되는 부분으로
소인수로 분해할 B가 소수라면 즉 NMG가 0이 아니라면 10번 동그라미 과정에서 NO가 되어 D가 증가됩니다.
하지만 소수가 아니라면 NMG가 0이 되어 소인수 분해되는 과정이 진행되는데,
예를 들어 50을 소인수 할 때 먼저 2로 나눈 나머지가 0이므로 소인수 분해 값으로 A배열에 2가 저장된 후
몫인 25가 B에 저장됩니다. 이때 아직 D가 2이므로 다시 D를 초기화할 필요없이 다음 값인 25(B)를 D로 나누게 되므로 결국 2부터 나누게 되는 것이죠.
25를 나누는 과정에서 나머지가 0이 아니므로 D가 2~5까지 증가되면서 진행됩니다. D가 5일 때 나머지가 0이 되므로 A배열에 5가 저장된 후 몫인 5가 B에 저장됩니다. 이후 E, 즉 현재 몫인 5의 제곱근이 2인데 이는 현재 D 값보다 2작으므로 B 자체가 소인수가 되어 7번 동그라미 과정을 거친 후 A배열에 5가 저장되어 최종적으로 2, 5, 5의 소인수 분해 과정이 완료됩니다.
오늘도 즐거운 하루 되세요.
"