약수
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
자기 자신도 약수다.