티스토리 뷰

알고리즘 공부/백준

백준 1016번

_Yunhwan 2022. 10. 29. 01:03

https://www.acmicpc.net/problem/1016

 

1016번: 제곱 ㄴㄴ 수

어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수

www.acmicpc.net

import math

a,b =map(int,input().split())
# 제곱수 구하기
array = [i**2 for i in range(2,int(math.sqrt(b))+1)]

#a부터 b까지의 배열을 생성
check = [1 for _ in range(a,b+1)]


for i in array:
  num = a//i
  while num * i <= b:
    # num*i가 a와 b 범위안에 있을 경우
    if a <= num*i <= b:
      #0으로 설정
      check[num*i-a] = 0
    num+=1

print(sum(check))

에라토스테네스의 체 알고리즘 

사용 시 시간초과..

 

b이하의 제곱수를 구한 뒤,

a와 b사이의 제곱수의 배수 들을 0 표시

a부터b의 값을 모두 더한 값이

제곱ㄴㄴ 수

 

 

'알고리즘 공부 > 백준' 카테고리의 다른 글

백준 2293번  (0) 2022.10.29
백준 1038번  (1) 2022.10.29
백준 1456번  (0) 2022.10.29
백준 1189번  (0) 2022.10.29
백준 17086번  (0) 2022.10.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함