https://www.acmicpc.net/problem/1644
1644번: 소수의 연속합
문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두
www.acmicpc.net
검색해서 에라토스테네스의 체 코드를 이용해 N이하의 소수배열을 구하고(여기를 참고)
2003번문제와 동일한 방법으로 연속된 합을 구했다.
def isPrime(n):
a = [False,False] + [True]*(n-1)
for i in range(2,n+1):
if a[i]:
primes.append(i)
for j in range(2*i, n+1, i):
a[j] = False
primes = []
N = int(input())
isPrime(N)
left, right, result = 0, 0, 0
if len(primes) == 0:
hap = 0
else:
hap = primes[0]
while left <= right and right < len(primes):
if hap <= N:
if hap == N:
result += 1
right += 1
if right < len(primes):
hap += primes[right]
elif hap > N:
hap -= primes[left]
left += 1
print(result)
'알고리즘 > 백준 (Pyhthon)' 카테고리의 다른 글
[알고리즘] 백준 14891 톱니바퀴 / python (0) | 2020.09.07 |
---|---|
[알고리즘] 백준 13913 숨바꼭질4 / python (0) | 2020.09.01 |
[알고리즘] 백준 1806 부분합 / python (0) | 2020.07.20 |
[알고리즘] 백준 2003 수들의 합 2 / python (0) | 2020.07.16 |
[알고리즘] 백준 2580 스도쿠 / pyhton, 백트랙킹 (0) | 2020.07.14 |