아니 어이가 없어서
왜 디버깅값이
a K J MOD(K,J) HAP
7 2 2 0 0
이죠
MOD로 나눠서 0으로 떨어지면 Y이고 k랑 J랑 같으면 K를 HAP에 더하는데 왜 HAP이 0이에요 2가맞죠
그리고 답안지를 똑바로 만드세요 알지못하게 생략한부분도 있잖아요
안녕하세요.
A에 7이 입력되었다고 가정하신 내용이네요.
A에 7이 입력된 후
HAP는 소수의 합이 누적될 변수이므로 0으로 초기화를 합니다. ← HAP은 초기값부터 저장되므로 처음에 0으로 시작합니다.
K는 소수인지 판별할 숫자가 저장될 변수로 소수는 2부터 판별하므로 K를 2로 초기화합니다.
K는 2부터 1씩 증가하면서 A까지, 즉 7까지 변화하면서 소수 판별에 사용합니다.
J는 소수인지 판별할 때 나눌 값, 즉 제수가 저장될 변수입니다. 제수도 2부터 시작합니다. 그러므로 J도 2로 초기화합니다.
현재
A HAP K J
7 0 2 2
가 저장된 상태입니다.
MOD(K, J) → K를 J로 나눈 나머지를 확인합니다. K는 2이고 J도 2이므로 나머지는 0입니다.
나머지가 0이라면 현재의 K는 소수일 가능성이 있습니다. 나머지가 0일 때 K와 J, 즉 제수와 피젯수가 같으면 소수입니다.
그렇지 않으면 J의 배수입니다.
현재
A HAP K J MOD(K,J)
7 0 2 2 0
가 저장된 상태입니다.
K = J → 소수인지 판단하는 부분입니다. K와 J가 같으면 소수입니다. 소수라면 HAP에 K를 누적해야 합니다.
HAP = HAP + K에 의해 HAP은 2가 됩니다.
현재
A HAP K J MOD(K,J)
7 2 2 2 0
가 저장된 상태입니다.
K < A → K가 A, 즉 7보다 작은 동안 소수 판별 작업을 수행합니다. 소수 판별을 한 후 K와 A를 비교하므로 결국 K가 7일 때까지 소수 판별 작업을 수행합니다.
아직 K가 A보다 작으므로 K를 1 증가시킨 후 소수 판별을 계속해서 수행합니다.
현재
A HAP K J MOD(K,J)
7 2 3 2 0
가 저장된 상태입니다.
K가 3일 때는
J는 2로 초기화된 후
MOD(K, J)가 1이므로 J를 증가시켜 J가 3일 때 MOD(K, J)가 0이 됩니다.
3도 소수이므로 HAP에 누적됩니다. HAP은 5가 됩니다.
아직 K가 A보다 작으므로 K를 1 증가시킨 후 소수 판별을 계속해서 수행합니다.
K가 4일 때는
J는 2로 초기화된 후
MOD(K, J)가 0인데 K와 J가 같지 않습니다. 즉 4는 2의 배수이므로 소수가 아니죠.
그래서 4는 HAP에 누적되지 않습니다.
아직 K가 A보다 작으므로 K를 1 증가시킨 후 소수 판별을 계속해서 수행합니다.
위와 같은 방법으로 K가 7일 때까지 소수 판별을 계속 수행한 후 마지막에 HAP에 저장된 값 17을 출력합니다.
디버깅 표의 변수들은 초기값부터 저장되어 표시됩니다. 이점 학습에 참고하세요.
또한 디버깅 표는 실제 시험장에서 시험지의 빈 여백을 이용해 디버깅하는 것에 대비하여 공간 절약 형태로 가로의 위치를 고려하지 않고 각 변수의 값 변화만 공백없이 위에서 부터 붙여서 작성하고 있으니 이점 참고하세요(교재 36쪽 잠깐만요 참고)
오늘도 즐거운 하루 되세요.
-
*2017-07-06 09:19:43
안녕하세요.
A에 7이 입력되었다고 가정하신 내용이네요.
A에 7이 입력된 후
HAP는 소수의 합이 누적될 변수이므로 0으로 초기화를 합니다. ← HAP은 초기값부터 저장되므로 처음에 0으로 시작합니다.
K는 소수인지 판별할 숫자가 저장될 변수로 소수는 2부터 판별하므로 K를 2로 초기화합니다.
K는 2부터 1씩 증가하면서 A까지, 즉 7까지 변화하면서 소수 판별에 사용합니다.
J는 소수인지 판별할 때 나눌 값, 즉 제수가 저장될 변수입니다. 제수도 2부터 시작합니다. 그러므로 J도 2로 초기화합니다.
현재
A HAP K J
7 0 2 2
가 저장된 상태입니다.
MOD(K, J) → K를 J로 나눈 나머지를 확인합니다. K는 2이고 J도 2이므로 나머지는 0입니다.
나머지가 0이라면 현재의 K는 소수일 가능성이 있습니다. 나머지가 0일 때 K와 J, 즉 제수와 피젯수가 같으면 소수입니다.
그렇지 않으면 J의 배수입니다.
현재
A HAP K J MOD(K,J)
7 0 2 2 0
가 저장된 상태입니다.
K = J → 소수인지 판단하는 부분입니다. K와 J가 같으면 소수입니다. 소수라면 HAP에 K를 누적해야 합니다.
HAP = HAP + K에 의해 HAP은 2가 됩니다.
현재
A HAP K J MOD(K,J)
7 2 2 2 0
가 저장된 상태입니다.
K < A → K가 A, 즉 7보다 작은 동안 소수 판별 작업을 수행합니다. 소수 판별을 한 후 K와 A를 비교하므로 결국 K가 7일 때까지 소수 판별 작업을 수행합니다.
아직 K가 A보다 작으므로 K를 1 증가시킨 후 소수 판별을 계속해서 수행합니다.
현재
A HAP K J MOD(K,J)
7 2 3 2 0
가 저장된 상태입니다.
K가 3일 때는
J는 2로 초기화된 후
MOD(K, J)가 1이므로 J를 증가시켜 J가 3일 때 MOD(K, J)가 0이 됩니다.
3도 소수이므로 HAP에 누적됩니다. HAP은 5가 됩니다.
아직 K가 A보다 작으므로 K를 1 증가시킨 후 소수 판별을 계속해서 수행합니다.
K가 4일 때는
J는 2로 초기화된 후
MOD(K, J)가 0인데 K와 J가 같지 않습니다. 즉 4는 2의 배수이므로 소수가 아니죠.
그래서 4는 HAP에 누적되지 않습니다.
아직 K가 A보다 작으므로 K를 1 증가시킨 후 소수 판별을 계속해서 수행합니다.
위와 같은 방법으로 K가 7일 때까지 소수 판별을 계속 수행한 후 마지막에 HAP에 저장된 값 17을 출력합니다.
디버깅 표의 변수들은 초기값부터 저장되어 표시됩니다. 이점 학습에 참고하세요.
또한 디버깅 표는 실제 시험장에서 시험지의 빈 여백을 이용해 디버깅하는 것에 대비하여 공간 절약 형태로 가로의 위치를 고려하지 않고 각 변수의 값 변화만 공백없이 위에서 부터 붙여서 작성하고 있으니 이점 참고하세요(교재 36쪽 잠깐만요 참고)
오늘도 즐거운 하루 되세요.