책 내용 질문하기
2020년 정처기 실기 2회대비 합격전략집 실전 모의고사 1회 1번 질문이요
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
0
조회수
281
작성일
2020-10-11
작성자
탈퇴*원
첨부파일

해당 구문을 실행할때 k가 3일때까지 출력되는것은 이해되었습니다.

근데 3을 출력하고 나서 if(k<7) k++;를 수행하면 k=4가 되잖아요?

그리고 다시 while문의 처음으로 이동하면 j=2로 설정이 되고 while(k%j !=0)의 구문을 통해 4%2==0이므로 while문 안의 조건은 거짓이 되어 j는 증가하지 않게되고요

그런데 k가5일때는 while문 안의 조건이 만족하여 j가 1 증가하게 되면 결국 if (k==j)이 조건에 다다랐을때 k=5, j=3으로 서로 다르니까 k를 출력 안해야되는거 아닌가요?

어째서 5를 출력하는지 모르겠습니다

답변
2020-10-12 11:43:27

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

 

(해설 번호 기준)

k가 5가 되었을 때,

j는 2번에서 다시 2가 되고, 

2부터 1씩 증가하면서 5를 나눴을 때 나머지가 0이 되는 값을 찾습니다.

 

3번에서 j가 3이 되었을 때라면, 5%3의 경우 나머지가 2이므로 0과 같지 않아 다시 j값을 증가시킬 것이고,

5%4 = 1

5%5 = 0 <- 여기서나 k%j의 값이 0이 나와 빠져나가게 되고 5번에서 k과 j의 값은 같으므로 6번에서 출력되게 되죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-10-12 11:43:27

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

     

    (해설 번호 기준)

    k가 5가 되었을 때,

    j는 2번에서 다시 2가 되고, 

    2부터 1씩 증가하면서 5를 나눴을 때 나머지가 0이 되는 값을 찾습니다.

     

    3번에서 j가 3이 되었을 때라면, 5%3의 경우 나머지가 2이므로 0과 같지 않아 다시 j값을 증가시킬 것이고,

    5%4 = 1

    5%5 = 0 <- 여기서나 k%j의 값이 0이 나와 빠져나가게 되고 5번에서 k과 j의 값은 같으므로 6번에서 출력되게 되죠.

     

    행복한 하루되세요 :)

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