약수 계산기로 무엇을 할 수 있나요?
이 약수 계산기는 정수 하나를 입력하면 두 가지 결과를 즉시 보여 줍니다. 바로 그 수의 모든 약수와 소인수분해 결과입니다. 약수란 어떤 수를 나누어떨어지게 하는, 즉 나머지가 0이 되는 정수를 말합니다. 소인수는 곱했을 때 원래의 수가 되는 소수(prime number)들로, 그 수를 이루는 가장 기본적인 구성 요소라고 할 수 있습니다. 숙제를 풀 때, 분수를 약분할 때, 최대공약수를 찾을 때, 또는 수의 성질을 살펴볼 때 두루 쓸 수 있는 편리한 도구입니다.
사용 방법
입력란은 단 하나, "약수를 구할 수:" 항목뿐입니다. 정수(양수든 음수든)를 입력하면 나머지 계산은 계산기가 알아서 처리합니다. 이 도구는 절댓값을 기준으로 계산하므로 결과로 나오는 약수는 항상 양수입니다. 처리 가능한 범위는 2,147,483,647보다 작은 정수이며, 이 값 이상은 계산되지 않습니다.
- 0은 특수한 경우로 처리되어 0을 반환합니다.
- 음수는 절댓값을 사용합니다(예: -12는 12와 동일한 약수를 가집니다).
계산 원리
이 계산기는 입력한 수까지 모든 숫자를 일일이 확인하는 대신, 1부터 그 수의 제곱근까지만 반복합니다. 나누어떨어지는 각 값 i마다 i와 그 짝이 되는 몫(수 ÷ i)을 함께 기록합니다. 이 제곱근 방식은 약수를 쌍으로 찾기 때문에 큰 수일수록 훨씬 빠릅니다. 결과는 중복을 제거한 뒤 오름차순으로 정렬됩니다. 소인수분해에는 검증된 소수 처리 알고리즘(Apache Commons Math)을 사용해 절댓값을 소인수들로 분해합니다.
$$\text{Factors} = \left\{\, d \in \mathbb{Z}^{+} : \text{Number} \bmod d = 0 \,\right\}$$
실제 예시
36을 입력해 봅시다. 반복은 1부터 7까지 진행됩니다(\(\sqrt{36} = 6\)을 막 넘는 지점까지):
- 1은 36을 나누어떨어지게 함 → 1과 36 기록
- 2는 36을 나누어떨어지게 함 → 2와 18 기록
- 3은 36을 나누어떨어지게 함 → 3과 12 기록
- 4는 36을 나누어떨어지게 함 → 4와 9 기록
- 6은 36을 나누어떨어지게 함 → 6 기록(짝도 6이므로 한 번만)
정렬하면 약수는 1, 2, 3, 4, 6, 9, 12, 18, 36 입니다. 소인수는 2, 2, 3, 3 입니다(\(2 \times 2 \times 3 \times 3 = 36\)이기 때문).
자주 묻는 질문
약수와 소인수는 어떻게 다른가요? 약수는 입력한 수를 나누어떨어지게 하는 모든 수입니다. 반면 소인수는 곱했을 때 그 수가 되는 소수들만을 가리킵니다. 36의 경우 약수에는 12, 18 같은 합성수도 포함되지만, 소인수는 2, 2, 3, 3뿐입니다.
음수를 입력하면 왜 양수 약수가 나오나요? 계산기가 절댓값을 기준으로 동작하기 때문에 -12와 12는 동일한 양의 약수 목록을 보여 줍니다.
입력할 수 있는 수의 크기에 제한이 있나요? 네, 있습니다. 숫자는 2,147,483,647보다 작아야 하며(음수의 경우 그 음수보다 커야 합니다), 이 한계값 이상이거나 이하인 값은 결과를 반환하지 않습니다.