[백준] 2581번 소수 (Python)
Source
https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
How to solve?
1. 시작하는 숫자가 0이나 1일 경우 소수 리스트에 포함되면 안되기 때문에 예외처리를 해준다.
2. 2중 for문을 작성하여 2부터 해당 숫자까지 나머지가 0인 경우가 발생한다면
(나누어 떨어진다면) 소수가 아니므로 is_prime을 False로 바꾸고 for문에서 빠져나간다.
3. 어떠한 숫자에도 나누어 떨어지지 않은채 루프가 끝나면 is_prime이 True이며,
이때 prime_list에 해당 숫자를 추가한다.
4. prime_list의 길이가 0이라면 (소수가 하나도 없음) -1을 출력.
그게 아닐 시 합계와 리스트의 첫번째 숫자를 출력한다.
Code
start = int(input())
end = int(input())
prime_list = []
if start == 1 or start == 0:
start = 2
for i in range(start, end+1):
is_prime = True
for j in range(2, i):
if i % j == 0:
is_prime = False
break
else:
continue
if is_prime:
prime_list.append(i)
if len(prime_list) == 0:
print(-1)
else:
print(sum(prime_list))
print(prime_list[0])
'Problem solve' 카테고리의 다른 글
[백준] 1193번 분수찾기 (Python) (0) | 2022.05.25 |
---|---|
[백준] 1929번 소수 구하기 (Python) (0) | 2022.05.24 |
[백준] 11653번 소인수분해 (Python) (0) | 2022.05.20 |
[백준] 1978번 소수 찾기 (0) | 2022.05.19 |
[백준] 10757번 큰 수 (Python) (0) | 2022.05.19 |