본문 바로가기
문제 풀이/[BaekJoon]

[BaekJoon] 1016 제곱 ㄴㄴ 수 (Gold 1) - Python

by 조랩 2023. 1. 9.

문제

 

어떤 정수 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