정수의 가장 작은 약수를 구해야 할 때는 간단한 'for' 반복문만으로도 손쉽게 해결할 수 있습니다. 2부터 차례대로 나누어 떨어지는 수를 찾으면 그것이 곧 가장 작은 약수가 됩니다.
아래는 전체 동작 과정을 보여주는 예제입니다.
예제 코드
first_num = int(input("숫자를 입력하세요..."))
my_list = []
print("입력한 숫자는 ")
print(first_num)
for i in range(2, first_num + 1):
if first_num % i == 0:
my_list.append(i)
my_list.sort()
print("가장 작은 약수는 : ")
print(my_list[0])실행 결과
숫자를 입력하세요...56 입력한 숫자는 56 가장 작은 약수는 : 2
코드 설명
사용자로부터 숫자를 입력받습니다.
약수를 저장할 빈 리스트를 하나 정의합니다.
입력받은 숫자를 콘솔에 출력합니다.
2부터 입력받은 숫자까지의 범위를 반복하며 탐색합니다.
입력받은 숫자를 현재 반복 변수(i)로 나누었을 때 나머지가 0인지 검사합니다.
나누어 떨어진다면, 즉 약수라면 리스트에 추가(append)합니다.
반복이 끝나면 리스트를 오름차순으로 정렬합니다.
정렬된 리스트의 첫 번째 요소가 가장 작은 약수이므로 이를 출력합니다.
효율성을 높이는 팁
사실 위 코드에서는 정렬 과정이 꼭 필요하지 않습니다. 2부터 오름차순으로 탐색하기 때문에 처음 발견되는 약수가 이미 가장 작은 약수이기 때문입니다. 따라서 첫 번째 약수를 찾는 즉시 break로 반복을 종료하면 불필요한 연산을 줄여 실행 속도를 개선할 수 있습니다.