문제
자연수 M, N이 주어질 때 M 이상 N 이하의 자연수 중 소수의 합과 최솟값을 구하라.
코드
m = int(input())
n = int(input())
sum = 0
prime_numbers = []
for num in range(m, n+1):
if num == 2:
sum += num
prime_numbers.append(num)
else:
for i in range(2, num):
if num % i == 0:
break
if i == num-1:
sum += num
prime_numbers.append(num)
if(prime_numbers):
print(sum)
print(min(prime_numbers))
else:
print(-1)
풀이
1) M부터 N까지 자연수를 반복한다.
2) 자연수 num을 2부터 num-1까지 나눠보고, 나누어 떨어지는 숫자가 있으면 소수가 아니다.
3) for문을 탈출하지 않고 i가 num-1까지 증가하는 경우 num은 소수이다. 합계에 더해주고 소수 list에 추가한다.
2는 소수이므로 예외처리 한다.
4) 소수 list에 원소가 존재한다면 (소수가 존재하면) 합계와 최솟값을 출력한다.
소수가 없으면 -1을 출력한다.
'👩🏻💻 Front-end > 👾 Algorithm' 카테고리의 다른 글
백준 1929 - 에라토스테네스의 체 (Python) (0) | 2022.05.11 |
---|---|
백준 11653 - 소인수분해 (Python) (0) | 2022.05.10 |
백준 1978 - 소수 찾기 (Python) (0) | 2022.05.09 |
백준 2839 - 설탕 배달 (Python) (0) | 2022.05.08 |
백준 2775 - 부녀회장이 될테야 (Python) (0) | 2022.05.08 |