첫번째 코드
소수 구하기를 위한 에...라토스테네스의 체를 이용하는 코드를 작성하자!! 까지는 잘 작성했는데,
마지막에 거듭제곱에서 더하는 것에서 애를 먹어 책에서 참고했다!!
책과 에라토스테네스의 체를 이용하는 과정은 똑같지만
범위 구성에서 생각이 조금 다르다.
책은 그냥 모든 숫자에 대해서 진행하였지만,
나는 거듭 제곱이면 최대값에서 2제곱 아래까지만 진행하여 거기서 소수를 구하고
마지막에 소수의 숫자들이 최소값 이상, 최대값 이하인 경우만 구하면 된다고 생각했다.
둘다 정답에 도달한다!
import sys
import math
input = sys.stdin.readline
n, m = map(int, input().split())
M = int(math.sqrt(m))
A = list(range(M + 1))
A[1] = 0
for i in range(int(math.sqrt(M)) + 1):
if A[i] == 0:
continue
else:
for j in range(i + i, M + 1, i):
A[j] = 0
answer = 0
for i in range(len(A)):
if A[i] != 0:
tmp = A[i]
while A[i] <= m/tmp:
if A[i] >= n/tmp:
answer += 1
tmp = A[i] * tmp
print(answer)
통과!:)
링크
programmers/백준/Gold/1456. 거의 소수 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
040 제곱 ㄴㄴ 수 (0) | 2024.06.06 |
---|---|
037 소수 구하기 (0) | 2024.06.04 |
036 잃어버린 괄호 (0) | 2024.05.30 |
035 회의실 배정 (0) | 2024.05.30 |
034 수 묶기 (0) | 2024.05.28 |