본문 바로가기
Python/백준

백준 - 1929 소수 구하기

by sophia02 2022. 7. 18.

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

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

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

예제 입력 1 

3 16

예제 출력 1 

3
5
7
11
13

 

내 풀이

# 백준 소수 구하기
# 내 1풀이 시간초과
m, n = map(int, input().split())  # m과 n을 입력받음
prime_number = list(range(m, n+1))  # 범위의 모든 값을 넣어줌
for i in range(m, n+1):  # 범위만큼 반복
    for j in range(2, int(i**0.5)+1):  # 나누어줄 값 범위
        if i % j == 0:  # 나머지가 없으면
            prime_number.remove(i)  # 소수가 아니므로 지워줌
            break
for i in prime_number:  # 소수만 남은 리스트 출력
    print(i)

# 내 풀이 2


def isPrime(n):  # isPrime이라는 함수를 정의
    if n == 1:  # 1 일 경우 false 반환
        return False
    else:
        for i in range(2, int(n**0.5)+1):  # 아니라면 이 범위에서 나눠주기
            if n % i == 0:  # 나누어 떨어지면
                return False  # false 반환
        return True


m, n = map(int, input().split())
for i in range(m, n+1):  # 입력받은 범위에서 반복
    if isPrime(i):  # isPrime 함수가 참인 i(소수) 라면
        print(i)  # print 해줌

'Python > 백준' 카테고리의 다른 글

백준 - 1110  (0) 2022.08.08
백준 - 1284 집주소  (0) 2022.07.19
백준 - 4948  (0) 2022.07.16
백준 - 1676  (0) 2022.07.15
2309 - 일곱난쟁이  (0) 2022.07.14