Coding Test/Baekjoon
[Python/BOJ] 1456. 거의 소수
NLP Developer
2023. 11. 2. 14:19
728x90
반응형
https://www.acmicpc.net/problem/1456
1456번: 거의 소수
어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다.
www.acmicpc.net
문제
어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다.
두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다.
입력
첫째 줄에 왼쪽 범위 A와 오른쪽 범위 B가 공백 한 칸을 사이에 두고 주어진다.
출력
첫째 줄에 총 몇 개가 있는지 출력한다.
풀이

Code
import sys
input = sys.stdin.readline
def solution(a, b) :
# 1. 소수 판별 리스트, 거의 소수 리스트 생성
end = int(b ** .5)
decimal, ans = [True] * (end + 1), 0
decimal[0], decimal[1] = False, False
# 2.
for i in range(2, end + 1) :
# 2-1. 해당 수가 소수일 경우
if decimal[i] :
# 2-1-1.
for j in range(i + i, end + 1, i) :
# 소수 판별
if decimal[j] : decimal[j] = False
# 3.
for i in range(1, end + 1) :
n = 2
if decimal[i] :
while i ** n <= b :
if i ** n >= a :
ans += 1
n += 1
# 4. 결과 출력
print(ans)
if __name__ == "__main__":
a, b = map(int, input().split())
solution(a, b)
728x90
반응형