190208 백준 알고리즘 문제풀기
08 Feb 2019 | baekjoon[2581] 소수
문제
-
2개의 정수가 입력되고, 두 수를 포함하는 사이의 수들 중 소수를 찾아 그 합과 제일 작은 소수를 출력
- 소수는 1보다 큰 자연수이므로 그 이하의 수는 소수가 아니다
- 약수가 없는 수가 소수이므로 2부터 자기자신/2 까지만 소수인지 확인하면 된다
- 2부터 자기자신/2까지 판단할 수를 나누며 나머지가 0이된다면 소수가 아님(약수가 존재)
- 아닐경우는 소수로 판단한다.
정답
def isprimenum(num):
lnum = int(num / 2)
if num <= 1 or num == 4:
return 0
for j in range(2, lnum):
if num%j == 0:
return 0
return 1
pnums = []
nums = []
nums.append(int(input()))
nums.append(int(input()))
for j in range(nums[0], nums[1]+1):
if isprimenum(j)==1:
pnums.append(int(j))
if sum(pnums)==0:
print(-1)
else:
print(sum(pnums))
print(sorted(pnums)[0])