티스토리 뷰
728x90
https://www.acmicpc.net/problem/2581
- 문제 :
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.
- 풀이 :
소수인지 판별하는 isPrime() 함수를 구현하고 M부터 N까지 모든 수에 대해 소수판별 및 첫 번째 소수를 입력하였다.
소수의 합이 초기값일 경우 소수가 없으므로 -1을 출력하게 했다.
1이 소수가 아니라는 예외처리를 해주지 않아 한 번 틀렸다. 주의해야겠다.
- 소스코드 :
def isPrime(n):
if n == 1:
return False
for i in range(2,n):
if n % i == 0:
return False
return True
N = int(input())
M = int(input())
answer = 0
minAnswer = M
first = True
for i in range(N,M+1):
if isPrime(i):
if first:
minAnswer = i
first = False
answer += i
if answer == 0:
print(-1)
exit()
print(answer)
print(minAnswer)
320x100
'Algorithm > Math' 카테고리의 다른 글
(Python/파이썬) - 백준(BOJ) 6359번 : 만취한 상범 (0) | 2022.04.25 |
---|---|
(Python/파이썬) - 백준(BOJ) 17087번 : 숨바꼭질 6 (0) | 2022.04.18 |
(Python) - BOJ(15654번) : N과 M (5) (0) | 2022.03.03 |
(Python) - BOJ(11444번) : 피보나치 수 6 (0) | 2022.03.03 |
(Python) - BOJ(13258번) : 복권 + 은행 (0) | 2022.03.02 |
댓글
© 2022 WonSeok, All rights reserved