백준 2581 c++

magicdrill·2024년 3월 11일
0

백준 문제풀이

목록 보기
130/654

백준 2581 c++

#include <iostream>

using namespace std;

int input(int lower, int upper);
int sum_prime(int M, int N);
int min_prime(int M, int N);
bool check_prime(int K);
void print_result(int total, int min);

int main(void)
{
	int M, N;

	M = input(1, 10000);
	N = input(1, 10000);
	print_result(sum_prime(M, N), min_prime(M, N));

	return 0;
}

int input(int lower, int upper)
{
	int A;

	while (1)
	{
		cin >> A;
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

int sum_prime(int M, int N)
{
	int i;
	bool prime;
	int total = 0;

	for (i = M; i <= N; i++)
	{
		prime = check_prime(i);
		if (prime == 1)
		{
			total = total + i;
		}
		else
		{
			;
		}
	}

	return total;
}

int min_prime(int M, int N)
{
	int i;
	bool prime;
	int min = -1;

	for (i = M; i <= N; i++)
	{
		prime = check_prime(i);
		if(prime == 1)
		{
			min = i;
			break;
		}
		else
		{
			min = -1;
		}
	}

	return min;
}

bool check_prime(int K)
{
	int i, j;
	bool prime = 0;
	int temp;

	for (i = 2; i < K; i++)
	{
		//1은 소수 아님, 2는 소수임
		if (K % i == 0)
		{
			prime = 0;
			break;
		}
		else
		{
			prime = 1;
		}
	}
	if (prime == 1 || K == 2)
	{
		prime = 1;
		return prime;
	}
	else
	{
		return prime;
	}
}

void print_result(int total, int min)
{
	if (total == 0)
	{
		cout << min << endl;
	}
	else
	{
		cout << total << "\n" << min << endl;
	}

	return;
}

0개의 댓글