문제
어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수가 몇 개 있는지 출력한다.
입출력 예시
입력: 첫째 줄에 두 정수 min과 max가 주어진다.
출력: 첫째 줄에 min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수의 개수를 출력한다.
제한
- 1 ≤ min ≤ 1,000,000,000,000
- min ≤ max ≤ min + 1,000,000
입력예시1)
1 10
출력예시1)
7
입력예시2)
15 15
출력예시2)
1
입력예시3)
1 1000
출력예시3)
608
코드
MIN, MAX = map(int, input().split())
result = [1] * (MAX - MIN + 1)
num = [i**2 for i in range(2, int(MAX**(1/2) + 1))]
for i in num:
n = MIN // i * i
while(n < MAX + 1):
if n - MIN >= 0: result[n - MIN] = 0
n += i
print(sum(result))
실행 화면
채점 결과
728x90
'문제 풀이 > [BaekJoon]' 카테고리의 다른 글
[BaekJoon] 16236 아기상어 (Gold 3) - Python (0) | 2023.01.09 |
---|---|
[BaekJoon] 1992 쿼드트리 (Silver 1) - Python (0) | 2023.01.09 |
[BaekJoon] 3009 네 번째 점 (Bronze 3) - Python (0) | 2023.01.06 |
[BaekJoon] 14500 테트로미노 (Gold 4) - Python (0) | 2023.01.06 |
[BaekJoon] 1107 리모컨 (Gold 5) - Python (0) | 2023.01.06 |