C로 구현한 2581번 소수 문제 풀이입니다.
https://www.acmicpc.net/problem/2581
#include <stdio.h>
int main() {
int m, n, min=0, result=0;
scanf("%d", &m);
scanf("%d", &n);
for(int i=m; i<=n; i++) {
int count = 0;
if(i == 1)
continue;
for(int j=2; j<i; j++) {
if(i%j == 0) {
count = 1;
break;
}
}
if(count == 0) {
if(min == 0) {
min = i;
}
result += i;
}
}
if(result != 0)
printf("%d\n%d", result, min);
else
printf("-1");
}
입력받을 자연수 m과 n, 소수 값들 중 최솟값을 담을 변수 min, 소수인 것을 모두 더한 변수 result 를 선언한다.
중첩 반복문을 활용하는데, 첫번째 반복문은 입력받은 자연수 m부터 n까지 수행되도록 한다.
만약 해당 값이 1이라면 넘어가도록 하고, 두번째 반복문에서는 2부터 i까지 수행하고 소수가 아니라면 변수 count에
1을 할당하고 두번째 반복문을 빠져나오도록 한다.
두번째 반복문이 끝난 후 변수 count의 값이 0이라면 소수로 판단되기 때문에 변수 result에 해당 값을 누적해간다.
추가적으로 최솟값을 도출하기 위해 변수 min의 값이 0일 경우에만 해당 값을 할당한다. 즉, 가장 먼저 나온 소수값을
할당하는 것이다.
최종적으로 합(result)과 최솟값(min)을 출력하고, 소수가 없을 경우는 -1을 출력한다.
'백준(C언어) 풀이 > 수학' 카테고리의 다른 글
백준(C) 2747번 피보나치 수 풀이 (0) | 2021.09.20 |
---|---|
백준(C) 5543번 상근날드 (0) | 2021.09.17 |
백준(C) 2475번 검증수 풀이 (0) | 2021.09.08 |
백준(C) 1085번 직사각형에서 탈출 풀이 (0) | 2021.09.08 |
백준(C) 10250번 ACM 호텔 풀이 (2) | 2021.09.01 |