https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
풀이 :
- 주어진 m과 n사이의 소수를 구해서, 그 합과 최솟값을 출력
- 소수가 없다면 -1출력
-m의 최대값이 10,000이기 때문에 시간 초과가 날 일은 없어서 1부터 i의 값까지 다 돌려서 소수를 구해줘도 된다.
코드 :
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
cin.tie(NULL);
ios::sync_with_stdio(false);
int n, m, sum, smallest, prime;
cin >> m >> n;
sum = 0;
smallest = -1;
for(int i = m; i <= n; i++){ //m이상 n이하
prime = 0;
for(int j = 1; j <= i; j++){ //소수 찾는 for문
if (i%j == 0){ //1부터 i까지 나머지가 0이라면 카운트
prime++;
}
}
if(prime == 2){ //1과 자신만으로 나눠지는 수가 소수.
sum += i; //즉, 카운트 된 값이 2라면 소수
if (smallest < 0){ //가장 처음 만나는 소수가 제일 작은 소수이라서,
smallest = i; //처음 초깃값 -1일 때만 if문에 들어감
}
}
}
if(smallest > 0){ //소수를 찾았다면 소수의 합 출력
cout << sum << '\n';
}
cout << smallest << '\n'; //소수를 못 찾았다면 -1일 출력되고, 그렇지 않으면 최솟값이 출력됨
}
'PS_Baekjoon' 카테고리의 다른 글
[백준 C++] 11728번 : 배열 합치기 (0) | 2023.03.15 |
---|---|
[백준 C++] 1417번 : 국회의원 선거 (1) | 2023.03.14 |
[백준 C++] 4949번 : 균형잡힌 세상 (0) | 2023.03.12 |
[백준 C++] 2563번 : 색종이 (0) | 2023.03.11 |
[백준 C++] 1912번 : 연속합 (0) | 2023.03.10 |