STUDY_SEONMIN

2581. 소수 본문

STUDY/Baekjoon Algorithm

2581. 소수

Kululu_ 2021. 7. 12. 11:49

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.

소수가 하나도 존재하지 않으면 -1을 출력하세요.

 

def is_prime(n):
    if n == 1:
        return False
    else:
        cnt = 0
        for i in range(2, int(n**0.5)+1):
            if n % i == 0:
                cnt += 1
                break
        if cnt == 0:
            return True
        else:
            return False
                        
M = int(input())
N = int(input())
prime_nums = []

for num in range(M, N+1):
    if is_prime(num):
        prime_nums.append(num)

if len(prime_nums) == 0:
    print(-1)
else:
    print(sum(prime_nums))
    print(min(prime_nums))

 

  • 어떤 숫자가 소수인지를 판단하는 is_prime 함수를 만들고 이 함수를 활용해 M부터 N까지의 숫자 중 소수인 숫자들만 리스트에 추가합니다.

  • 소수가 1개도 없다면 리스트 안에 데이터가 아무것도 존재하지 않으므로 리스트의 길이가 0이 되니, 이 점을 이용해 소수가 없을 때는 -1 그 외에는 소수들의 합과 최소값을 출력하게 합니다.

'STUDY > Baekjoon Algorithm' 카테고리의 다른 글

1929. 소수 구하기  (0) 2021.07.14
11653. 소인수분해  (0) 2021.07.12
1978. 소수 찾기  (0) 2021.07.12
1011. Fly me to the Alpha Centauri  (0) 2021.07.10
2839. 설탕 배달  (0) 2021.07.09
Comments