728x90
https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
# 2581번 문제 : 소수 찾기
# 소수란? 1과 자신으로만 나누어지는 수
# 주어진 2개의 수 사이의 소수를 찾고 그 소수들의 최솟값과 그 합을 찾아내는 문제
n = int(input())
m = int(input())
answer=[]
for i in range(n,m+1):
count=0
if i > 1: # 1보다 큰 수만 검사를 해야 1~1이라는 입력이 나왔을시 -1이 나온다
for j in range(2,i): # 2부터 i-1까지 해서 불필요한 검사시간을 줄인다
if(i%j==0):
count+=1 # 2~i-1사이에 카운트가 발생하면 그건 소수가 아니다
break # 이미 소수임이 증명됬으면 불필요한 검사시간을 늘릴필요가 없다
if(count==0):
answer.append(i) # answer리스트에 추가한다
if(len(answer)>0): # 리스트의 길이가 0이상이면 값이 있는거다
print(sum(answer)) # 합출력
print(min(answer)) # 최소값출력
else:
print(-1)
전날에 풀었던 소수찾는문제에 심화버전같은 느낌이였다
시간초과때문에 반복문을 최적화 할 필요가 있었다 그래서 2부터 시작시키고 break까지 쓰며 최적화 시켰지만
계속 오답이 발생했고 1 1 을 입력해본결과 그 이유를 알고 if i>1를 추가해서 해결했다 생각보다 해결하는데에 오래걸려서 아직 멀었다는 느낌을 받을 수 있었다
728x90
'알고리즘' 카테고리의 다른 글
| 백준의 알고리즘 4948번 문제(python) (0) | 2021.06.14 |
|---|---|
| 백준의 알고리즘 11653번 문제(python) (0) | 2021.06.13 |
| 백준의 알고리즘 1978번 문제(python) (0) | 2021.06.11 |
| 백준의 알고리즘 2869번 문제(python) (0) | 2021.06.10 |
| 백준의 알고리즘 1712번 문제(python) (0) | 2021.06.09 |