-
[백준] 1929번_소수구하기Study/알고리즘 2020. 2. 9. 23:10
문제 링크 : https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000)
www.acmicpc.net
def print_prime(i): if i >= 2: for k in range(2,int(i**0.5)+1): if i%k==0: return print(i) return m,n = map(int,input().split()) for i in range(m,n+1): print_prime(i)
isPrime 함수를 만들어서 True, False 반환한 다음에 main부분에서 출력해도 되지만 그냥 바로 출력하는 함수를 만들어보았다.
def sieve(n): prime = [] check = [False for _ in range(n+1)] # 지워졌으면 True i = 2 while i<=n: if not check[i]: prime.append(i) j = i+i while j<=n: check[j] = True j += i i+=1 return prime a,b = map(int,input().split()) prime_arr = sieve(b) for p in prime_arr: if a<=p<=b: print(p)
에라토스테네스의 체를 이용하여 더욱 빠르게 문제를 해결했다.
'Study > 알고리즘' 카테고리의 다른 글
[백준] 3009번_네번째점 (0) 2020.02.10 [백준] 4948번_베르트랑공준 (0) 2020.02.10 [백준] 1978번_소수찾기 (0) 2020.02.08 [백준] 2775번_부녀회장이될테야 (0) 2020.02.07 [백준] 10250번_ACM호텔 (0) 2020.02.06