약수

Summary

약수는 1부터 sqrt(n)까지만 확인하면 된다.
n / 2까지 보는 방식은 맞을 수 있지만 느리다.


약수 구하기

List<Integer> divisors = new ArrayList<>();
 
for (int i = 1; i <= n / i; i++) {
    if (n % i != 0) continue;
 
    divisors.add(i);
    if (i != n / i) {
        divisors.add(n / i);
    }
}
 
Collections.sort(divisors);

주의점

제곱수면 같은 약수를 두 번 넣지 않는다.
i * i <= n은 overflow 가능 → i <= n / i
자기 자신도 약수다.