문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

답안
def check(num):
n = num**0.5
for i in range(2, int(n)+1):
if num % i == 0:
return False
else:
return True
a, b = map(int, input().split())
for i in range(a, b+1):
if i == 1:
continue
elif check(i):
print(i)
# 소수인지를 확인하는 check 함수 생성
# 해당 숫자가 소수인지 확인하기 위해선 해당 숫자의 제곱근까지만 확인해도 된다.
# 2부터 주어진 숫자의 제곱근까지 나머지가 0인 값이 있다면 False반환, 아니면 True
# check함수에서 True가 반환된다면, 그 숫자를 출력한다.
후기
함수 사용이 익숙치 않아 혼자서 해결하지 못한 문제이다.
소수 판별을 할 때 시간을 아끼기 위해서 2부터 해당 숫자의 제곱근까지만 나눠주었다.
다음에 다시 풀어보기
728x90
'파이썬 코딩테스트' 카테고리의 다른 글
백준 1260번 - DFS와 BFS (파이썬/Python) (0) | 2024.02.18 |
---|---|
백준 2485번 - 가로수 (파이썬/Python) (0) | 2024.02.17 |
백준 1978번 - 소수 찾기 (파이썬/Python) (0) | 2024.02.15 |
백준 1037번 - 약수 (파이썬/Python) (0) | 2024.02.14 |
백준 9095번 - 1, 2, 3 더하기 (파이썬/Python) (2) | 2024.02.13 |