728x90
소스코드
import sys
import math
n1,n2 = map(int, sys.stdin.readline().split())
for i in range(n1,n2+1) :
c = 0
for j in range(2, int(math.sqrt(i)) + 1) :
if i % j == 0 :
c+=1
break
if c == 0 and i > 1 :
print(i)
pass
풀이
앞에 다뤘던 소수문제랑 똑같이 코드를 작성하면 시간초과에 걸리게 됩니다.
그래서 소수일때 다음 수를 나누는것이 아닌 break를 통해 소수가 아니면 바로 다음 수로 넘어가게끔 설계해줍니다.
그 수의 제곱근까지만 소수인지 판별하면 된다는 최적화된 알고리즘을 통해 구현했습니다.
문제
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
728x90
'BOJ > 수학' 카테고리의 다른 글
BOJ : 13610 Volta(볼타) (파이썬) (0) | 2022.12.03 |
---|---|
BOJ : 2903 중앙이동알고리즘 (파이썬) (0) | 2022.12.02 |
BOJ : 11653 소인수분해 (파이썬) (0) | 2022.12.02 |
BOJ : 2581 소수 (파이썬) (0) | 2022.12.02 |
BOJ : 2587 대표값2 (파이썬) (0) | 2022.12.02 |