소수
문제
* start ~ end 사이의 수에서 소수를 찾는다.
first = 찾은 첫번째 소수
sum = 범위 안에 있는 모든 소수의 합
풀이
* is_prime = 소수인지 체크
is_first = 첫번째 소수인지 체크
* 어떤 수 num을
2부터 (num-1)까지 나머지연산(%)을 하였는데
0이 나오지 않았다면 num은 소수이다.
생각할 점
* 숫자 1은 소수가 아님을 생각하여 따로 조건문을 작성하자.
코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int start, end, first = -1, sum = 0, is_prime = 1, is_first = 1;
cin >> start >> end;
if (start == 1)
start++;
for (int i = start; i <= end; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0) {
is_prime = 0;
break;
}
}
if (is_prime == 1) {
sum += i;
if (is_first == 1) {
first = i;
is_first = 0;
}
}
is_prime = 1;
}
if (first == -1)
cout << -1 << endl;
else
cout << sum << '\n' << first << endl;
return 0;
}
귀여운 그림은 낡은 창고님이 그리셨습니다.
반응형
'백준 알고리즘' 카테고리의 다른 글
[백준 1292 C++] 쉽게 푸는 문제 (0) | 2021.06.28 |
---|---|
[백준 1978 C++] 소수 찾기 (0) | 2021.06.28 |
[백준 2609 C++] 최대공약수와 최소공배수 (0) | 2021.06.27 |