에라토스테네스의 체: 두 판 사이의 차이
내용 삭제됨 내용 추가됨
잔글 봇: 틀 이름 및 스타일 정리 |
|||
102번째 줄:
◆ Python 으로 구현
<source lang="
num=1000 # 초기값을 설정한다.
from cmath import sqrt # 루트식을 사용할 수 있는 함수를 탑재한다. 이유는 추후에 설명할 것이다.
factor =3 # 삭제할 배수의 초기값을 설정한다. 짝수는 2의 배수를 삭제할 때 제거될 것이므로 생략한다.
limit = sqrt(num).real # 초기값의 제곱근까지 나눠보면 답이 나오므로 나눌 값에 대해 제한을 건다. '.real'는 소수부분을 버린다는 뜻이다.
candidates = [2*a-1 for a in range(2, num + 1)] # 후보군을 설정한다. 짝수는 모두 2의 배수이므로 효율을 높이기 위해 생략한다.
while factor <= limit:
if number % factor == 0:
if number != factor:
candidates.remove(number) # 모든 후보군에 대해서 factor로 나눠서 나머지가 0이 되면 그 수를 삭제한다.이 때 factor가 소수라면 제외한다.
factor += 2 # factor를 증가시킨 후, factor가 제한을 넘지 않으면 다시 반복한다.
candidates.append(2) # 생략한 2를 추가한다
print(candidates) # 결과값 출력
▲ while candidates:
</source>
|