[ BOJ / Python ] 1644번 소수의 연속합

황승환·2022년 7월 3일
0

Python

목록 보기
339/498


이번 문제는 에라토스테네스의 체를 통해 주어진 n까지의 소수들을 리스트로 정리하고, 리스트를 순회하며 연속합이 존재하는 경우 결과 변수를 증가시키는 방식으로 코드를 구현하여 해결하였다.

Code

n = int(input())
prime = [True for _ in range(n+1)]
primes = []
for i in range(2, n+1):
    if prime[i]:
        primes.append(i)
        for j in range(2*i, n+1, i):
            prime[j] = False
answer = 0
if not primes:
    print(answer)
elif len(primes) == 1:
    if primes[0] == n:
        answer += 1
        print(answer)
else:
    for i in range(len(primes)):
        for j in range(i, len(primes)):
            tmp = sum(primes[i:j+1])
            if tmp == n:
                answer += 1
            elif tmp > n:
                break
    print(answer)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글