Miner

[Baekjoon] 1929 번 본문

Python

[Baekjoon] 1929 번

MineTime76 2023. 1. 19. 18:53
import sys

a, b = list(map(int, sys.stdin.readline().split()))

arr = [ i for i in range(a, b+1)]

i = a
while i <= b+1:
    if i != 1:
        for j in range(2, i):
            if i % j == 0: 
                arr.remove(i)
                break
    i += 1

for i in arr:
    print(i)

6번의 시간초과 (기준 2초)

>> 에라토스테네스의 체

https://freedeveloper.tistory.com/392

 

[이것이 코딩 테스트다 with Python] 38강 에라토스테네스의 체

https://www.youtube.com/watch?v=9rLFFKmKzno&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=38 다수의 소수 판별 하나의 수에 대해서 소수인지 아닌지 판별하는 방법을 알아보았다 하지만 특정한 수의 범위 안에 존재하

freedeveloper.tistory.com

소수인지 검사할때 2부터 i까지 검사하는 것이 아니라 2부터 i의 제곱근까지만 검사하면 나머지는 검사하나 마나여서 제곱근까지만 검사하면 되는 것이었다.

 

# TRY 1

import sys

a, b = list(map(int, sys.stdin.readline().split()))

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


for i in range(a, b+1):
    
    if i != 1:
        if ccal(i):
            print(i)

3, 16 을 넣었을 때

답 5 7 9 11 13 15 나옴

 

※ 리턴의 위치 수정

# TRY 1-1

import sys

a, b = list(map(int, sys.stdin.readline().split()))

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


for i in range(a, b+1):
    
    if i != 1:
        if ccal(i):
            print(i)

3 16 넣었을 때

3 5 7 11 13 나옴

# TRY 2

import sys

a, b = list(map(int, sys.stdin.readline().split()))

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


for i in range(a, b+1):
    if ccal(i):
        print(i)

3 16 넣었을 때

3 5 7 11 13 나옴

'Python' 카테고리의 다른 글

[Baekjoon] 10951  (0) 2023.01.30
[Baekjoon 1652] 런타임 에러 (네임에러) 문제  (0) 2023.01.26
리스트 내장함수  (0) 2023.01.24
[Baekjoon] 1051번  (0) 2023.01.19
[Baekjoon] 2563번 오류(?)  (0) 2023.01.19