개념
자연수 을 나누어떨어지게 하는 자연수가 의 약수입니다. 가 약수이면 도 약수이며 두 수의 곱은 입니다.
약수 쌍
두 약수가 모두 보다 크면 곱이 보다 커집니다. 따라서 부터 까지 검사하면 모든 약수 쌍을 찾을 수 있습니다.
의 약수 쌍은 입니다. 의 처럼 두 값이 같으면 한 번만 기록합니다. 오름차순 출력이 필요하면 모은 약수를 정렬합니다.
예를 들어 에서 을 검사하면 반대쪽 약수 도 함께 얻습니다. 를 다시 검사하면 이미 얻은 쌍을 반대로 확인하게 됩니다. 작은 쪽만 검사해도 모든 약수를 얻는 이유입니다. 약수 목록을 직접 나열해야 하는 문제에 이 방법을 사용합니다.
복잡도
자연수를 , 약수 개수를 라고 합니다.
| 연산 | 시간복잡도 | 공간복잡도 |
|---|---|---|
| 약수 탐색·정렬 | 결과 저장 |
예제
문제
양의 정수의 모든 약수를 오름차순으로 출력하여라.
입력
첫째 줄에 양의 정수 이 주어진다. 이다.
출력
약수를 한 줄에 공백으로 구분하여 출력한다.