1929번 : 소수 구하기 문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1929
풀이 코드
m, n = map(int, input().split())
for i in range(m, n+1):
if i == 1:
continue
for j in range(2, int(i ** 0.5) +1):
if i % j == 0:
break
else:
print(i)
m, n = map(int, input().split())
- 공백으로 입력되는 두 자연수를, 변수 m, n 에 저장
- 정수가 공백으로 나누어 입력되므로, input().split() 으로 문자열을 공백으로 나뉜 리스트로 변환
- map 을 이용하여 리스트의 모든 원소에 int() 함수를 적용
for i in range(m, n+1):
- m 이상 n 이하의 소수를 찾아야 하므로, for 반복문 사용
- range() 를 사용하여 m 부터 n 까지 for 문을 반복
- i의 값으로 m 부터 n 까지 순차적으로 들어감
if n == 1: / continue
- 입력받은 정수 n 이 1인 경우
- m, n 이 모두 1인 경우 이므로, m 과 n 사이에 소수가 존재하지 않음
- continue 를 사용하여, 프로그램의 흐름이 반복문의 처음으로 돌아가도록 함
for j in range(2, int(i ** 0.5) +1):
- (수) ** 0.5 를 통해 특정 수의 제곱근을 구할 수 있음
- i의 제곱근까지 나누어 떨어지는 수가 있는지 판별
- range() 를 사용하여 2부터 i^0.5 까지 for 문을 반복
- i 값으로 2 부터 i^0.5 까지 들어감
- 1보다 큰 자연수로 나누어야 하므로, 2부터 시작
+ 참고 )
파이썬에서 ' ** ' 기호를 사용하여 제곱을 표현
예시 ) 2 ** 5 == 2의 5제곱 == 32
파이썬 내장 함수인 pow 를 사용할 수도 있음
예시) pow(2, 5) == 2의 5제곱 == 32
if i % j == 0: / break
- i 를 j 로 나누었을 때, 나누어 떨어지는 경우 소수가 아님
- 더 이상 소수인지 판별하지 않아도 되므로, break 로 for문을 빠져나감
else: print(i)
- i 가 1이 아닌 경우
- 소수인 숫자 i 를 출력
나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.
https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC
'백준 알고리즘 문제 풀이 [Python]' 카테고리의 다른 글
[백준/Python] 9020번 골드바흐의 추측 (기본수학2) (0) | 2023.02.25 |
---|---|
[백준/Python] 4948번 베르트랑 공준 (기본수학2) (0) | 2023.02.25 |
[백준/Python] 11653번 소인수분해 (기본수학2) (0) | 2023.02.25 |
[백준/Python] 2581번 소수 (기본수학2) (1) | 2023.02.25 |
[백준/Python] 1978번 소수 찾기 (기본수학2) (0) | 2023.02.25 |