https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
난이도 : 실버 5
태그 : 수학, 정수론, 소수 판정
1. 설명
소수는 자기 자신과 1로만 나뉘는 수 입니다.
따라서 2 부터 자기 자신까지 나뉘눈 수가 있는지 판단하면 됩니다.
2. 소스코드
<python />
a = int(input())
b = int(input())
lst = list()
for i in range(a, b+1):
lst.append(i)
for i in range(len(lst)):
check = False
n = 0
for j in range(2, lst[i]):
if lst[i] % j == 0:
lst[i] = 0
break;
lst = [i for i in lst if i != 0 and i != 1]
if len(lst) == 0:
print(-1)
else:
print(sum(lst))
print(min(lst))
3. 코드분석
1. 입력값 세팅 및 lst(List)에 넣기
2. 리스트 모든 원소를 탐색하며, 2 이상부터 (자기 자신 - 1) 까지 나뉘는 수가 있는지 확인하고,
나뉜다면 0으로 설정
3. 0 또는 1이 아닌 원소만 뽑기
4. 리스트의 크기가 0이라면 (소수가 없다면) -1 출력
5. 그렇지 않다면 총 합과 최솟값 출력
4. 후기
예전에 풀었던 파이썬 문제입니다.
지금보니... 왜 이렇게 풀었을까 싶은 부분도 있네요.
'코딩테스트 > Python' 카테고리의 다른 글
[백준 10951번] [Python] A+B - 4 (2) | 2023.04.17 |
---|---|
[백준 8958번] [Python] OX퀴즈 (0) | 2023.04.17 |
[백준 11720번] [Python] 숫자의 합 (0) | 2023.03.30 |
[백준 3052번] [Python] 나머지 (0) | 2023.02.13 |
[백준 11721번] [Python] 열 개씩 끊어 출력하기 (0) | 2023.02.07 |