[백준_python] 소수 구하기 || 1929

2021. 2. 11. 22:42·🎯PS

www.acmicpc.net/problem/1929

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

2부터 쭉 나눠보기

# 소수 구하기
# ? 시간 초과
m, n = map(int, input().split(' '))

arr = [i for i in range(m, n+1)]

for i in arr:
   if i == 1:
       continue
    if i == 2:
        print(i)
        continue
    cnt = 0
    for j in range(2, i):
        if i % j == 0:
            cnt += 1
    if cnt == 0:
        print(i)

시간 초과 발생!!


에라토스테네스의 체

해당하는 숫자의 약수 중간값까지 약수의 배수들을 모두 지워나가는 방식.
해당하는 숫자의 약수들은 각각 서로 쌍을 이룰 수 있다. 예를 들어, 6이라고 한다면,
1, 2, 3, 6 이므로, 16과 23처럼 쌍을 이룰 수 있다.
따라서 2부터 루트 6까지 검색하며, 배수들을 모두 지워나간다.
 

def isprime(num):
    if num == 1:
        return False
    else: #else안에 안넣어줘도 됨
        for i in range(2, int(num**0.5)+1):
            if num % i == 0:
                return False
        return True


m, n = map(int, input().split(' '))

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

num을 제곱근으로 바꿔주어 그 값까지 나눠떨어지는 지 검사하거나,
반대로 검사해주는 값을 제곱해준다.

# 소수 구하기_3

def isprime(num):
    if num == 1:
        return False
    i = 2
    while i*i <= num:
        if num % i == 0:
            return False
        i += 1
    return True

m, n = map(int, input().split(' '))
for i in range(m, n+1):
    if isprime(i):
        print(i)

 

반응형
'🎯PS' 카테고리의 다른 글
  • [백준_python] 최소공배수 || 1934 (유클리드 호제법)
  • [백준_python] 파도반 수열 || 9461
  • [백준_python] 1, 2, 3 더하기 || 9095
  • [백준_python] 1로 만들기 || 1463
dmaolon
dmaolon
프로그래밍을 공부한 내용을 기록하는 공간입니다.
  • dmaolon
    기록 남기기
    dmaolon
  • 전체
    오늘
    어제
    • ALL (260)
      • ➰ Series (5)
      • 🎯PS (168)
        • Algorithm (15)
      • ☕ Java (11)
      • 🍀 Spring Boot (29)
      • 💬 Database (9)
      • 🐣 Computer Science (14)
      • 👍 Daily (4)
      • 🎁ReactJS (4)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    알고리즘
    프로그래머스
    백준
    프로그래밍
    Spring
    dfs
    자바
    파이썬
    BFS
    코딩
  • hELLO· Designed By정상우.v4.10.1
dmaolon
[백준_python] 소수 구하기 || 1929
상단으로

티스토리툴바