[백준] 1929번 소수 구하기

seeseal·2022년 4월 13일
0

코딩 테스트

목록 보기
3/22
post-thumbnail

문제 출처 : https://www.acmicpc.net/problem/1929

기존 코드 💻

📘 시간 초과

import sys
m,n = map(int,sys.stdin.readline().split())

for i in range(m, n+1) :
    err = 0
    if i > 1 :
        for j in range (2,i) :
            if i % j == 0 :
                err += 1
        if err == 0 :
            print(i)

👉🏻 다른 문제들과 마찬가지로 1부터 숫자까지 모든 수를 나눠서 소수를 찾았는데 숫자가 크게 주어지다보니 시간초과가 발생했다.

📘 에라토스테네스의 체


👉🏻 다른 사람들 코드를 참고하니 모두가 '에라토스테네스의 체'를 사용하였다. 소수의 배수를 모두 지워서 소수만 남기는 방법이다.

수정 코드 💻

import sys
m,n = map(int,sys.stdin.readline().split())

def isPrime(num) :
    if num == 1:
        return False
    else :
        for i in range(2, int(num**0.5)+1) :
            if num % i == 0 :
                return False
        return True

for i in range(m, n+1) :
    if isPrime(i) :
        print(i)

👉🏻 제곱근은 (num**0.5)로 작성한다.

느낀 점 ✏️

사람들 정말 효율적이게 코드 작성 잘한다.
그래도 나도 늘고 있으니깐 언젠가는 저렇게 짤 수 있을거다.
그날까지 파이팅🥰

0개의 댓글

관련 채용 정보