본문 바로가기
백준

백준 2581번[c언어] : 소수

by 핫동경 2022. 3. 20.
반응형

https://www.acmicpc.net/problem/2581

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

 

 


[풀이]

○ 두 수 a, b를 입력받는다

 

○ 소수를 체크하는 함수를 만들어준다

 

○ 반복문을 통해 소수함수에 a부터b까지 집어넣고 리턴값이 있다면 그 수는 소수이다. sum에 더해준다.

 

○ 소수 최솟값을 구하기 위해 최솟값 함수를 10001로 초기화해주고 if(min>i) min=i 를 해준다

    (i는 증가하기 때문에 맨 처음 최솟값만이 저장됨)

 

반복문이 끝나고 sum이 0이면 소수가 없었다는 것이니 -1을 출력해준다. 그리고 sum이 -1이라면

    최솟값을 출력하지 않는다.

#include<stdio.h>
int sosu(int n) {
	if (n <= 1)
		return 0;
	for (int i = 2; i <= n / 2; i++) {
		if (n % i == 0)
			return 0;
	}
	return 1;
}


int main() {
	int a, b;
	int sum = 0;
	int min = 10001;
	scanf("%d %d", &a, &b);
	for (int i = a; i <= b; i++) {
		if (sosu(i)) {
			sum += i;
			if (min > i)
				min = i;
		}
	}
	if (sum == 0)
		sum = -1;
	printf("%d\n", sum);
	if(sum!=-1)
	printf("%d",min);
}
반응형

댓글