728x90
또다시 소수 구하기 문제였다. 소수의 조건인 1과 자기 자신으로만 나누어진다를 명심하고 풀이에 임했다.
풀이는 다음과 같다
풀이
1. 1은 소수가 아니다 (코드에서 num <= 1 혹은 i == 1인 부분)
2. 그 이후의 숫자에서 입력 받은 숫자를 2부터 i의 제곱근까지의 숫자로 나누어 떨어지는지 확인해서 i가 반복문 속의 숫자로 나누어떨어지다면 소수가 아니다. (자기 자신으로만 나누어지니까)
최종 코드
최종적으로는 아래 두 코드로 풀었다.
def is_prime(num):
if num <= 1:
return False
if num <= 2:
return True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
m, n = map(int, input().split())
for i in range(m, n + 1):
if is_prime(i):
print(i)
위 코드가 return을 boolean으로 수정한 버전이고, 처음에 이걸로 안풀려서 아예 틀렸나보다 싶어 다시 푼것이 아래의 코드였다.
def is_prime(num):
if i==1:
return 0
for j in range(2,int(i**0.5)+1):
if i%j==0:
break
else:
print(num)
m, n = map(int, input().split())
for i in range(m, n + 1):
is_prime(i)
트러블슈팅
함수를 만들면서 return 0를 통해 진행했는데,
def is_prime(num):
if num <= 1:
return 0
if num <= 2:
print(num)
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return 0
print(num)
m, n = map(int, input().split())
for i in range(m, n + 1):
is_prime(i)
이게 틀린 결과로 나와서 진짜 이유를 모르겠었다. 손코딩으로 다시 디버깅해도 모르겠어서 지피티한테 물어봤는데 원인이 return 0였다...
'Algorithm > 백준' 카테고리의 다른 글
[백준] 6588: 골드바흐의 추측 (1) | 2023.10.14 |
---|---|
[백준] 1978: 소수 찾기 (1) | 2023.10.11 |
[백준] 17427: 약수의 합 2 (1) | 2023.10.01 |
댓글