c언어 소스코드 질문합니다.

조회수 451회

제가 작성하고 싶은 조건은 아래 3가지 입니다.

  • 첫 번째 줄에 모든 소수를 차례대로 출력
  • 두 번째 줄에 소수의 개수를 출력
  • 세번째 줄에 소수의 최대, 최소 값과 두 수의 합을 출력

첫번째 줄은 코드를 작성하였습니다.
두번째는 res를 이용하였습니다. 그런데 여기서 res++; 코드를 어디에 붙여야 하나요?
위치 알려주세요. 그리고 3번째 조건은 어떻게 코드를 짜야하나요?

<작성한 코드>

#include <stdio.h>
#include <math.h>

#define size 1000001

int num[size] = { 0, };

int main() {
    int M, N, i, j, res = 0;
    int tmp = 0;

    for (i = 2; i < size; i++)
        num[i] = i;

    scanf_s("%d %d", &M, &N);
    tmp = (int)sqrt(N);

    for (i = 2; i <= tmp; i++) {
        if (num[i] == 0) 
            continue;
        else {
            for (j = i + 1; j <= N; j++) {
                if (num[j] == 0)
                    continue;

                if (num[j] % i == 0)
                    num[j] = 0; 
            }
        }
    }
    for (i = M; i <= N; i++) {
        if (num[i] != 0) 
            printf("%d", i); 
    }

    printf("\n%d", res);


    return 0;
}
  1. res++ 추가하기
  2. 3번째 조건 달성하기
  • 음... 그냥 맨 첫줄부터 끝줄까지 다 한번씩 붙여보시면 어때요? 뭐 하나는 걸리겠지요 😂 엽토군 2021.4.30 12:00
  • 숙제해결 질문만 너무 많이 올라오네요. nowp 2021.4.30 12:26

1 답변

  • 변수명을 바꾸는게좋을것같습니다. 예:

    int N, M; 
    scanf_s("%d %d", &N, &M); 
    printf("%d", N + M);
    

    와 같이 자기혼자서 짧은코드를 작성할때는 "?변수는 ~라는 뜻이구나"하고 알 수있지만 단체로(특히 질문할때)는 가독성이 안좋고, 답변하기도 귀찮아집니다. 아래코드를 참고하세요.

    #include <stdio.h>
    int main() {
        int n, prime_count = 0, index = 0, arr[100];
        scanf_s("%d", &n);
        for (int i=2; i <= n; i++) {
            int count = 0;
            for (int j=1; j <= i; j++) {
                if (i % j == 0) {
                    count++;
                }
            }
            if (count == 2) {
                arr[prime_count] = i;
                prime_count++;
                printf("%d ", i); //1
            }
        }
        printf("\n"); //2
        printf("%d\n", prime_count); //2
    
        int min = arr[0], max = arr[0]; 
        for (int i=0; i < prime_count; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        printf("%d %d %d", min, max, min + max); //3
        return 0;
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)