def find_smallest_integer_divisor(num):
for i in range(2, num+1):
if num % i == 0:
break
return i
Input으로 num이 주어지면 해당 num의 약수 중 1을 제외한 가장 작은 약수를 출력하는 함수이다. 가장 작은 것만 찾으면 되니 하나만 찾고 break하는 방법을 택했다.
이 간단한 함수를 짜면서도 여러가지 예상 못한 문제에 부딪혔으니...
첫째, return i 가 아닌 print(i)를 처음에 사용했더니 함수가 답을 전혀 산출해내지 못했다. return을 쓰지 않아 함수가 결과값을 받지 못해 None으로 처리한 것이라는 멘토님의 설명... 사실 문제에서 이미 return 쓰라고 적혀 있었는데 제대로 안읽어버림~ ㅎㅎ;
둘째, 처음에는 '굳이 큰 숫자 입력했을 때 끝까지 반복을 돌릴 필요가 있나?' 라는 생각에 range값을 range(2, num//2)로 설정하여 돌렸는데 2591이라는 소수 친구를 생각 못했다. 결국 range(2, num+1)로 바꾸고 마무리..