sm 기술 블로그
67. 1929(소수 구하기) 본문
import math
M, N = map(int, input().split())
for i in range(M, N+1):
if(i == 2 or i == 5):
print(i)
continue
index = i % 10
if((index == 1 or index == 3 or index == 7 or index == 9) and i != 1):
is_prime = True
R = int(math.sqrt(i))
for j in range(2, R+1):
if(i % j == 0):
is_prime = False
break
if(is_prime):
print(i)
시간제한이 있어 많이 생각해야 하는 문제.
소수에 대한 팁 :
1. 10이상 부터 소수는 일의자리가 1,3,7,9에만 분포되어 있다.
2. 값의 제곱근 이상의 수로는 나눌 수 없다.
3. 제곱근값 이내에서 1을 제외하고 한번이라도 나눠진다면 소수가 아니다.
소수 목록을 정리해놓은 사이트
https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98_(%EC%88%98%EB%A1%A0)
'문제 > 백준_파이썬' 카테고리의 다른 글
69. 9020(골드바흐의 추측) (0) | 2022.06.05 |
---|---|
68. 4948 (베르트랑 공준) (0) | 2022.06.04 |
66. 11653(소인수분해) (0) | 2022.06.04 |
65. 소수(2581) (0) | 2022.06.03 |
64. 1978(소수 찾기) (0) | 2022.06.02 |
Comments