if (c==0)
printf("소수");
이 부분에서 배열의 위치가 0부터 시작하면 소수라고 하는데 왜 소수인지 모르겠어요
n = 20이 들어왔다고 치면 s[0] = 2 이고
n = 7이 들어가면 s[0] = 7 아닌가요?
그러면 둘다 s[0] 시작이고 c == 0인 상태 아닌가요?
안녕하세요. 길벗 수험서 운영팀입니다.
do while문의 시작과 끝이 어딘지 정확히 확인해 주세요.
(579쪽 해설 페이지로 설명드리겠습니다.)
첫번째는 while(1)로 2~16번을 반복 수행합니다.
즉, 입력으로 2미만의 수가 n에 저장되지 않으면 무한으로 돌게 되죠.
두번째는 do~while()문으로 5~10번을 반복 수행합니다.
입력받은 수 n을 약수로 계속 나눠 1이 될 때까지 반복하게 되죠.
세번째는 while()문으로 7번만을 반복 수행합니다.
입력받은 수 n의 약수를 찾는 반복문이네요.
회원님이 말씀하신 20이 입력되게 되면, 2, 2, 5로 나눠지면서 n이 1이 됩니다. 두번째 do~while()문을 3번 반복하는 거죠.
if(c==0)을 만나는 시점에서 c는 -1에서 3번 c++을 하였으므로, 2값을 가지게 됩니다.
7의 경우 약수가 7 본인 밖에 없으니 7로 한번 나눠지면서 n은 1이 됩니다. 두번째 do~while()문은 1번 수행하겠네요.
if(c==0)을 만나는 시점에서 c는 -1에서 c++을 1회 수행하였으므로, 0값을 가지게 되었으므로 "소수"를 출력합니다.
행복한 하루되세요.^^
-
*2018-09-20 11:23:22
안녕하세요. 길벗 수험서 운영팀입니다.
do while문의 시작과 끝이 어딘지 정확히 확인해 주세요.
(579쪽 해설 페이지로 설명드리겠습니다.)
첫번째는 while(1)로 2~16번을 반복 수행합니다.
즉, 입력으로 2미만의 수가 n에 저장되지 않으면 무한으로 돌게 되죠.
두번째는 do~while()문으로 5~10번을 반복 수행합니다.
입력받은 수 n을 약수로 계속 나눠 1이 될 때까지 반복하게 되죠.
세번째는 while()문으로 7번만을 반복 수행합니다.
입력받은 수 n의 약수를 찾는 반복문이네요.
회원님이 말씀하신 20이 입력되게 되면, 2, 2, 5로 나눠지면서 n이 1이 됩니다. 두번째 do~while()문을 3번 반복하는 거죠.
if(c==0)을 만나는 시점에서 c는 -1에서 3번 c++을 하였으므로, 2값을 가지게 됩니다.
7의 경우 약수가 7 본인 밖에 없으니 7로 한번 나눠지면서 n은 1이 됩니다. 두번째 do~while()문은 1번 수행하겠네요.
if(c==0)을 만나는 시점에서 c는 -1에서 c++을 1회 수행하였으므로, 0값을 가지게 되었으므로 "소수"를 출력합니다.
행복한 하루되세요.^^