실전모의고사 1번문제에
#include <stdio.h>
main()
{
int k=2, j;
while(1) {
j=2;
while(k%j != 0) // 이부분 만족하지 않을때 아래 IF문으로 넘어가고
j++;
if(k == j) // 이부분을 만족하지 않을때 아래 IF문으로 넘어가고
printf("%d",k);
if(k<7) // 이부분을 만족할때 K값을 증가로 생각됩니다.
k++;
else
break;
}
}
처음 while(k%j != 0) 문을 만났을때 K가 4이고 J가 2일때 나머지가 0 이으로 다음 if문으로 넘어가면
if(k == j) 이 조건문도 만족하지 않으니 다음 if문으로 넘어가죠
if(k<7) 이부분을 만족하여 K값을 증가하고 5가 되었을때부터 이해가 되질 않습니다.
다시 while(k%j != 0) 문을 만낫을때 K가 5이고 J가 2일때 나머지가 1로 J값을 증감한후 다음if문으로 넘어갈때
if(k == j) 5와3이 같지 않으므로 다음 if문으로 넘어가게되면
k값이 6이 되므로 결국 답과는 거리가 먼 결과가 나타나게 되는데
여기서 부터 풀어나가는데 막힙니다.
추가의견
while(k%j != 0) 이부분에서 조건에 만족할 경우 만족하지 않을때까지 반복한 후 다음으로 넘어가게되니
정답이 유추가 됩니다.
안녕하세요 길벗수험서 운영팀입니다.
...? 추가의견에서 스스로 정답을 내신 것 같습니다.
while(k%j != 0)
j++;
이 부분은 k%j의 값이 0이 아닌 경우 0이 될 때까지 j++; 을 반복하라는 의미가 됩니다.
즉 5의 경우 2로 나눠서 아니니 j의 값 1증가(3), 다시 3으로 나눠서 아니니 j의 값 증가(4), 다시 4로 나눠서 아니니 j의 값 증가(5), 다시 5로 나누니 나머지가 0이므로 while문 조건을 만족하지 않아서 빠져나가게 되고, 다음 if문 if (k==j)를 만나게 되는 것입니다.
행복한 하루되세요 :)
-
관리자2020-07-13 11:07:10
안녕하세요 길벗수험서 운영팀입니다.
...? 추가의견에서 스스로 정답을 내신 것 같습니다.
while(k%j != 0)
j++;
이 부분은 k%j의 값이 0이 아닌 경우 0이 될 때까지 j++; 을 반복하라는 의미가 됩니다.
즉 5의 경우 2로 나눠서 아니니 j의 값 1증가(3), 다시 3으로 나눠서 아니니 j의 값 증가(4), 다시 4로 나눠서 아니니 j의 값 증가(5), 다시 5로 나누니 나머지가 0이므로 while문 조건을 만족하지 않아서 빠져나가게 되고, 다음 if문 if (k==j)를 만나게 되는 것입니다.
행복한 하루되세요 :)