728x90
> Python, 수학, 정수론, 소수, 판정에라토스테네스의 체
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
예제 입력 1
3 16
예제 출력 1
3
5
7
11
13
내 코드
import math
if __name__ == "__main__":
m, n = map(int, input().split())
for i in range(m,n+1):
if i == 1:
continue
for j in range(2, int(math.sqrt(i))+1):
if i%j==0:
break
else:
print(i)
Point ! ⭐️
- 예를 들어 121의 소수를 구할 때는 121이 2 ~ 11 (121의 제곱근) 까지 나눠지는지를 판단하여 소수인지 아닌지를 판단할 수 있다.
즉 1 ~ 121까지 모든 수로 나눈 나머지가 아닌 2 ~ 11 까지만 하면 되기 때문에 시간 단축을 할 수 있다. - mat.sqrt(x) : x의 제곱근
x**0.5 으로도 사용 가능 !
백준
https://www.acmicpc.net/problem/1929
참고
728x90
'Algorithm (Python, Java, SQL) > BaekJoon' 카테고리의 다른 글
[백준 1316번] 그룹 단어 체커 (Python) (딕셔너리에 원소가 있는지 검색할 땐 그냥 if x in dic) (0) | 2023.06.14 |
---|---|
[백준 1193번] 분수 찾기 (Python) (0) | 2023.06.14 |
[백준 4673번] 셀프 넘버 (Python) (0) | 2023.06.14 |
[백준 14720번] 우유 축제 (Python) (0) | 2023.06.08 |
[백준 10816번] 숫자 카드 2 (Python) (0) | 2023.04.04 |