반응형
문제
처음 코드
m, n = map(int, input().split())
prime = []
for i in range(m,n+1):
isPrime = 0
for j in range(2,i):
if i % j ==0:
isPrime = 0
break
else:
isPrime = 1
if isPrime == 1:
prime.append(i)
for x in prime:
print(x)
시간 초과 에러가 떴다.
그래서 j를 2, (i//2)+1을 돌렸지만
이것 또한 시간 초과 에러가 떴다.
다른 사람들의 코드를 참고한 결과
소수를 구할때는 값을 2로 나눠서 거기까지 돌리는 것보다 제곱근으로 계산하는 것이 효율적이라는 것을 알게 되었다
* 알아둘 기본 개념
16의 제곱근은 4
10의 제곱근은 루트 10
1. 직접 제곱근을 계산하기
number**0.5로 제곱근을 계산할 수 있다.
2. math.sqrt()
import math를 한 후에
math.sqrt(100) 으로 제곱근을 구한다
나는 1번을 이용했다.
맞은 코드
m, n = map(int, input().split())
def isPrime(i):
if i == 1:
return False
else:
for j in range(2,int(i**0.5)+1):
if i % j == 0:
return False
return True
for i in range(m,n+1):
if isPrime(i):
print(i)
반응형
'🏄♀️ 코딩테스트 > 🐍 Python' 카테고리의 다른 글
[ 백준 1158] ( python ) 요세푸스 문제 (0) | 2022.04.04 |
---|---|
[ 백준 10845] ( python ) 큐 (0) | 2022.04.03 |
[ 백준 1406] ( python ) 에디터 (0) | 2022.04.03 |
[ 백준 1874] ( python ) 스택 수열 (0) | 2022.04.02 |
[ 백준 4948 ] ( python ) 베르트랑 공준 (0) | 2022.03.31 |