에라토스테네스의 체: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
Vtable7 (토론 | 기여)
Vtable7 (토론 | 기여)
99번째 줄:
◆ python(3.6.4)으로 구현<ref>{{웹 인용|url=http://code.jasonbhill.com/sage/project-euler-problem-10/|제목=Project Euler Problem 10 {{!}} Jason's Code Blog|언어=en-US|확인날짜=2018-03-13}}</ref>
<source lang="python3">
def prime_sumprime_list(n):
# 에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주)
if n < 2: return
sieve = [True] * n
# n크기의 에라토스테네스 체 초기화
sieve = [True] * n # 요소 모두 True 설정(소수로 간주)
sieve[0] = sieve[1] = False # 0,1은 False설정(소수 아님 판정)
m = int(n ** 0.5 + 0.5) # halfup_round(sqrt(n))
 
# n의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사
for i in range(m + 1):
m = int(n ** if sieve[i] == False:0.5)
for i in range(2, m + continue1):
forif j in range(sieve[i*i,] n,== i)True: # 소수 i의 배수들을 False 판정 # i가 소수인 경우
sieve[for j] =in range(i+i, n, i): # i이후 i의 배수들을 False 판정
sieve[j] = False
 
# 소수 목록 산출 및 합을 출력
primes =return [i for i in range(2, n) if sieve[i] == True]
print(sum(primes))
</source>결과:<syntaxhighlight lang="python3">
prime_list(20)
[2, 3, 5, 7, 11, 13, 17, 19]
 
max(prime_list(1000000))
999983
 
</syntaxhighlight>
</source>
 
◆ Haskell 로 구현