190208 백준 알고리즘 문제풀기

|

[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])