프로그램
[파이썬] 문제 : 정해진 범위 소수 찾기(Sieve of Erastosthenes알고리즘)
오디세이99
2022. 12. 29. 20:13
728x90
반응형
lst = [a for a in range(2, 101)] # [2,3,4,5,6..100] 리스트 만들기
for i in range(2, 100): # 2,3,4,5...99까지 나옴
for j in range(len(lst)):
if i > 2 and i%2 == 0: # 2는 배수처리하고 2 이상 짝수는 모두 2의 배수여서 계산하지 않음. 속도 향상
continue # 하단 코드 실행하지 않고 반복문으로 다시 실행
if i != lst[j] and lst[j]%i == 0: # i = 5, lst[j] = 5 는 계산하지 않음. lst[j] % i == 0 하면 i의 배수인지 확인
lst[j] = 0 # 0을 삭제할 값으로 설정. 여기사 del을 사용하면 range(len(lst))다 달라져 에러 발생
for i in range(len(lst)-1, 0, -1): # 뒤에서부터 삭제. 앞아서부터 하면 인덱스가 달려져 에러 발생
if lst[i] == 0: # 0 값을 삭제할 항목
del lst[i] # 리스트에서 해당 인덱스 항목 삭제
for s in lst:
print(s,end=' ')
728x90
반응형