📝 문제
> M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
🎨 풀이
💡 성공 코드
import sys
def sosu (num):
if num == 1 :
return 0
for i in range(2,int(num**0.5)+1):
if num % i == 0:
return 0
print(num)
return 0
n,m = map(int,sys.stdin.readline().split())
for num in range(n,m+1):
sosu(num)
> 핵심 : for문 범위 줄이기
# main
1. n과 m을 입력받는다.
2. n부터 m까지 sosu() 함수에 값을 차례대로 넣어준다.
# sosu
4. 만약 수가 1이라면 바로 리턴해버린다.
5. 2부터 (num의 제곱근 + 1) 까지의 수를 이용해 차례대로 그 수를 나눠보고, 만약 나눠진다면 리턴해버린다.
- 이 부분이 바뀐 부분! (시간 줄이려고)
- 제곱근 + 1 까지 보는거나 그 끝까지 보는 거나 똑같아서 이렇게 줄일 수 있다넴.
6. 만약 리턴되지않았다면 그 수를 출력해준다.
- 여기까지 살아남았다면 소수라는 뜻이기 때문!
끝~
⭐ 느낀점
> ^_^ 예전에 풀어봤던 문제라 그런지 머리에 남아있긴 했다. 설명이 부족한 부분이 좀 있는 것 같긴 하지만 ㅠ.ㅠ 좀 더 발전해봐야겠따. 하하
'알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 11399번 - ATM (파이썬) (0) | 2022.07.22 |
---|---|
[백준] 2839번 - 설탕 배달 (파이썬) (0) | 2022.07.21 |
[DAY 099_백준] 11653번 - 소인수분해 (파이썬) (0) | 2022.06.29 |
[DAY 098_백준] 2581번 - 소수 (파이썬) (0) | 2022.06.28 |
[백준] 1978번 - 소수 찾기 (파이썬) (0) | 2022.06.26 |