어떤 숫자의 약수(인수)를 찾으려면 1부터 해당 숫자 자기 자신까지 반복문을 실행하면서, 각 숫자가 대상 숫자를 나누어 떨어지게 하는지 확인하면 됩니다.
예제 코드
num = int(input("enter a number"))
factors = []
for i in range(1, num + 1):
if num % i == 0:
factors.append(i)
print ("Factors of {} = {}".format(num, factors))코드 설명
위 코드의 동작 원리는 다음과 같습니다.
반복 변수 i가 num을 나머지 없이 완전히 나눌 수 있다면(num % i == 0), i는 num의 약수이므로 리스트에 추가됩니다. 반복이 끝나면 최종적으로 리스트가 출력되며, 이것이 바로 주어진 숫자의 약수 목록입니다.
실행 결과
enter a number75 Factors of 75 = [3, 5, 15, 25, 75]
성능 개선 팁
숫자가 매우 클 경우 위 방법은 비효율적일 수 있습니다. 약수는 쌍으로 존재하기 때문에, 실제로는 1부터 √num까지만 확인하면 됩니다. 예를 들어 75의 경우 √75 ≈ 8.66이므로 1~8까지만 검사한 뒤, 짝이 되는 약수(num ÷ i)를 함께 추가하면 연산량을 크게 줄일 수 있습니다.