소수를 구하는 법을 안다면 그렇게 어렵지 않은 문제이다. 입력 값도 10,000이하의 자연수이기 때문에 시간초과 걱정은 안해도 된다. M부터 N까지 반복문을 돌리면서 값이 소수인지 판별해주면 되겠다. 소수를 구할 때 2부터 나누어주면서 진행하기 때문에, 2가 소수라는 사실을 잊기 쉬우니 조심하자. 최솟값을 구할 때는 첫번 째 값일 때 즉, sum이 아직 0일 때 구한 값을 최솟값으로 초기값으로 설정해 준 뒤 그 뒤부터 비교를 해주면 된다.
##변수 선언 부분##
M = 0
N = 0
min = 0
sum = 0
isRight = 0
##메인 함수 부분##
if __name__ == "__main__":
M = int(input())
N = int(input())
for i in range(M, N+1):
isRight = 0 #소수가 맞는지 판별해준다.
for j in range(2, i):
if i % j == 0: #2부터 자기 자신 - 1 까지 나누어 주어서 나누어 떨어지면
isRight = 0 #소수가 아니다
break #반복문 탈출
isRight = 1 #그게 아니라면 소수다
if isRight == 1 or i == 2: #2가 누락이 되므로 2인 경우만 포함해준다.
if sum == 0: #소수를 구했지만 sum이 0이라는 것은 첫번째 경우이기 때문에
min = i
sum += i
if sum == 0:
print(-1)
else:
print(sum)
print(min)
sum=0일 때를 최솟값으로 설정해주지 않으면 min 값을 큰 수로 설정해주고 풀면 된다. 어렵지 않은 문제였다.
'백준 문제풀이(파이썬) > 기본 수학 2' 카테고리의 다른 글
백준 1002번 - 터렛 (0) | 2021.05.26 |
---|---|
백준 9020번 - 골드바흐의 추측 (0) | 2021.05.26 |
백준 4948번 - 베르트랑 공준 (Feat. 에라토스테네스의 체) (0) | 2021.05.26 |