에라토스테네스의 체의 원리를 응용한 문제
시간 복잡도를 위해 제곱수 판별에 해당 원리를 응용한다.
# 제곱 ㄴㄴ 수
# 어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다.
# 첫째 줄에 두 정수 min과 max가 주어진다.
# 첫째 줄에 min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수의 개수를 출력한다.
import math
min, max = map(int, input().split())
check = [False] * (max - min + 1)
for i in range(2, int(math.sqrt(max)) + 1):
now = i * i
start = min // now
if min % now != 0:
start += 1
for j in range(start, max // now + 1):
check[int(j * now - min)] = True
cnt = 0
for i in range(0, max - min + 1):
if check[i] == False:
cnt += 1
print(cnt)
'Code > Python' 카테고리의 다른 글
[Python] 백준 1747번 소수&팰린드롬 (0) | 2023.10.25 |
---|---|
[Python] 백준 1456번 거의 소수 (0) | 2023.10.25 |
[Python] 백준 1929번 소수구하기 (0) | 2023.10.24 |
[Python] 백준 1541번 잃어버린 괄호 (0) | 2023.10.23 |
[Python] 백준 1931번 회의실 배정 (1) | 2023.10.23 |