모두CBT

22-1다음 C 프로그램의 출력 결과를 적으시오.#include &lt… | 2022년 정보처리기사실기 1회차 기출문제 상세 페이지

6

22-1

다음 C 프로그램의 출력 결과를 적으시오.

#include <stdio.h>

int prime(int n) {
    if (n < 2)
        return 0;
    for (int d = 2; d * d <= n; d++)
        if (n % d == 0)
            return 0;
    return 1;
}

int main(void) {
    int target = 1122, answer = 0;
    for (int k = target; k >= 2; k--) {
        if (target % k == 0 && prime(k)) {
            answer = k;
            break;
        }
    }
    printf("%d", answer);
    return 0;
}
해설

17


[해설]

k를 target부터 1씩 줄이다가 target의 약수이면서 소수인 첫 값에서 break하므로, 이 프로그램은 가장 큰 소인수를 구한다.

1122 = 2 × 3 × 11 × 17
17을 넘는 약수 1122·561·374·187·102·66·51·34·33·22는 모두 합성수라 처음 만나는 소수 약수는 17이다.

prime 함수는 d × d ≤ n인 범위까지만 나눠 봐도 소수인지 충분히 판정할 수 있다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.