티스토리 뷰
https://www.acmicpc.net/problem/1456
import math
a,b =map(int,input().split())
array = [1 for i in range(int(math.sqrt(b)) + 1)] # 처음엔 모든 수가 소수(1)인 것으로 초기화
almost_prime =[]
cnt=0
# 에라토스테네스의 체 알고리즘
for i in range(2, int(math.sqrt(b)) + 1): # 2부터 n의 제곱근까지의 모든 수를 확인하며
if array[i] == 1: # i가 소수인 경우 (남은 수인 경우)
# i를 제외한 i의 모든 배수를 지우기
j = 2
while i * j <= int(math.sqrt(b)):
#소수가 아닌 수 설정
array[i * j] = 0
j += 1
for i in range(2, int(math.sqrt(b)) + 1): # 2부터 n의 제곱근까지의 모든 수를 확인하며
if array[i] == 1: # i가 소수인 경우 (남은 수인 경우)
j = 2
# i를 제외한 i의 제곱을 세주기
while i**j <= b :
#a이상 일때만 세주기
if i**j>=a:
cnt+=1
j += 1
print(cnt)
거의 소수의 최대 값은 b의 제곱근임,
따라서 에라토스테네스의 체를 사용할 때도 b제곱근 만큼의 공간만 사용 가능
- 에라토스테네스의 체를 사용하여 소수를 찾음
- 소수인 경우 거듭 제곱이 a이상 이고 b이하인 경우 세주기
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Python
- 감정일기장
- 기술면접
- 개인 프로젝트
- 그리디 알고리즘
- seb
- 프리프로젝트
- BFS
- SEB43기
- 프로젝트
- 다이나믹 프로그래밍
- dictionary
- 코테
- Redux
- 코드스테이츠
- 회고
- dfs
- 브루드포스
- 백준
- SEB 43
- 프론트엔드
- useContext
- React quill
- 프로그래머스
- 인적성
- 스택오버플로우
- til
- SEB 43기
- 감정 일기장
- SEB43
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함