문제 링크
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
예제 입력
3 16
예제 출력
3
5
7
11
13
풀이
- 시간초과에 주의(시간 복잡도 줄이는 방법 찾기)
- 시간을 단축시키기 위해 반복문을 최소한으로 타는 방법 찾기
- 1은 소수가 아니므로 생략
- 처음에는 반복문을 2부터 (n // 2) + 1 까지 했는데 시간초과가 발생
- 결국 인터넷을 검색해서 반복문을 2부터 int(num ** 0.5) + 1까지 해서 통과
- 에라토스테네스의 체라는 것을 이용해서 숫자의 제곱근의 약수의 여부를 검증하면 된다
- 에라토스테네스의 체 참조 - https://coding-factory.tistory.com/600
[Algorithm] 에라토스테네스의 체 - 소수 구하기 (범위)
에라토스테네스의 체란? 고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법이며 이 방법은 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라고 부릅니다. 특
coding-factory.tistory.com
소스 코드
m, n=map(int,input().split())
def isPrime(num):
if num == 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
else:
return True
for i in range(m, n+1):
if isPrime(i):
print(i)
'코딩테스트' 카테고리의 다른 글
[백준/2512번/파이썬(Python)] 예산 (0) | 2022.06.15 |
---|---|
[백준/1919번/파이썬(Python)] 연속합 (0) | 2022.06.14 |
[백준/1436번/파이썬(Python)] 영화감독 숌 (0) | 2022.06.09 |
[백준/1463번/파이썬(Python)] 1로 만들기 (0) | 2022.06.07 |
[백준/1149번/파이썬(Python)] RGB거리 (0) | 2022.06.06 |
댓글