https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
문제
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.
입력
입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.
출력
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.
단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
코드 정답
m = int(input())
n = int(input())
hap = 0
minn = 0
for i in range(m, n+1):
error = 0
if i > 1:
for j in range(2, i):
if i % j == 0:
error += 1
if error == 0:
if hap == 0:
minn = i
hap += i
if hap != 0:
print(hap)
print(minn)
else:
print(-1)
풀이
1~4행 설명
입력 첫째 줄에는 m 의 값을, 둘째 줄에는 n 의 값을 입력받는다. 변수 hap 에는 소수값들이 더해지며 변수 minn 에는 m 과 n 사이에 존재하는 소수들 중에서 최소값이 저장된다.
5~14행 설명
변수 m 에 저장된 값부터 변수n+1 의 사이에 존재하는 값들을 i 변수에 선언하며 6~14행을 반복한다.
i 값이 1보다 커야 실행되는 이유는 소수값이 2부터 존재하기 때문이다. 2부터 변수 i 사이의 값을 j에 넣어주며 9~10행을 반복한다. 반복이 될 때마다 error 의 값에 1을 더해준다. 이후 error 의 값이 0 일 경우에만 다음 if 문이 동작이 하게 되는데 변수 hap 의 값이 0 일 경우에 minn 의 값에 i 의 값을 넣어준다. 즉, 처음 작동이 되는 값을 minn 에 넣어주는 것이다. 이후 hap 에 1씩 더해진다.
16행~20행 설명
hap 의 값이 0 이 아니라면 hap 과 minn 의 값을 출력하고, 0 이라면 -1 을 출력한다.
'BaekJoon > 단계별로 풀어보기' 카테고리의 다른 글
[백준] 기본 수학 2 - 1929번 (Python) (0) | 2023.01.02 |
---|---|
[백준] 기본 수학 2 - 11653번 (Python) (0) | 2023.01.02 |
[백준] 기본 수학 2 - 1978번 (Python) (0) | 2023.01.02 |
[백준] 기본 수학 1 - 10757번 (Python) (0) | 2022.12.01 |
[백준] 기본 수학 1 - 2839번 (Python) (0) | 2022.12.01 |