컴공 공부/백준

[백준 알고리즘] 2581번 소수찾기2 C언어

무무뭉? 2021. 1. 7. 17:16
#include <stdio.h>

int main()
{
    int Min, Max; // 입력받을 최소 최대 값 변수
    scanf("%d %d", &Min, &Max);
    int sum = 0;                            // 소수의 합계
    int arr[Max - Min + 1];                 // 소수를 저장할 배열 선언
    for (int i = 0; i < Max - Min + 1; i++) //배열을 0으로 초기화
        arr[i] = 0;

    for (int i = Min; i < Max + 1; i++)
    {
        int flag;   //소수 판별 변수
        if (i == 1) // 1은 소수x
        {
            continue;
        }
        else if (i == 2) // 2는 소수
        {
            flag = 1;
        }
        else // 1과 2가 아닐 때
        {
            for (int j = 2; j < i; j++)
            {
                flag = 0;       //소수 판별 변수 초기화
                if (i % j == 0) //변수 i가 j로 나누었을때 나머지가 0이면 소수 x
                {
                    break;
                }
                flag = 1; //소수일 경우 소수 판별 변수는 1
            }
        }

        if (flag == 1)
        {
            sum += i;
            //printf("i: %d\n", i);
            arr[i - Min] = i;
            //printf("arr[%d]: %d\n", i - Min, i);
        }
    }
    for (int i = 0; i < Max - Min + 1; i++)
    {
        //printf("arr[%d]: %d\n", i, arr[i]);
        //printf("arr[%d]: %d\n", i, arr[i]);
        if (arr[i] != 0) //배열에 0이 아닌 수가 있을 경우를 검색
        {
            printf("%d\n%d", sum, arr[i]); //제일 처음 0이 아닌 수가 나왔을 경우
            // 출력 후 프로그램 종료
            return 0;
        }
    }
    printf("-1"); // 소수가 없을 경우 -1 출력 후 종료
    return 0;
}