https://www.acmicpc.net/problem/1929
두 자연수 사이의 소수를 구해서 각각 출력하는 문제입니다.
문제 자체는 간단했습니다.
m, n = map(int, input().split())
# m부터 n까지 정수들의 리스트를 만들어줌
num = list(range(m, n+1))
if 1 in num:
num.remove(1) # 1은 소수가 아니니까 삭제
prime=[] # 소수들을 담을 리스트 하나 생성
for i in num:
error = 0
for j in range(2, i): # 리스트 안의 수 각각 2 ~ (본인-1) 까지 나눠줌
# 나누어 떨어지면 소수가 아니니까 error + 1 해줌
if i % j == 0:
error += 1
# 에러가 0인 애들은 소수니까 prime리스트에 추가
if error == 0:
prime.append(i)
# 한 줄씩 출력
for p_num in prime:
print(p_num)
처음에 이렇게 했는데 시간 초과가 떴습니다.... ㅜ.ㅜ
그래서 찾아보니까 2 ~ 본인-1 수까지 나눠줄 때 자기 자신의 제곱근 까지만 확인 해주면 된다고 하더라구요? 그래서 코드를 수정하고 올려서 통과했습니다.
m, n = map(int, input().split())
for i in range(m,n+1):
if i == 1:
continue
error = 0
for j in range(2, int(i**0.5)+1): # 굳이 모든 수에 대해서 나눌필요 없음. 제곱근까지만 해도 됨
if i % j == 0:
error += 1
break
if error == 0:
print(i)
쓸데없는 리스트 생성하고 뭐 지우고 하는 과정도 다 뺐습니다. 최대한 필요한 것만 써야할텐데... 아직 많이 부족합니다. ㅜ.ㅜ
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 파이썬 2750 수 정렬하기 (0) | 2022.09.09 |
---|---|
[Python] 백준 파이썬 2869 달팽이는 올라가고 싶다 (0) | 2022.09.08 |
[Python] 백준 파이썬 10870 피보나치 수 5 (0) | 2022.09.07 |
[Python] 백준 파이썬 9020 골드바흐의 추측 (0) | 2022.09.06 |
[Python] 백준 파이썬 4948 베르트랑 공준 (0) | 2022.09.05 |