解法一
从1到对n开方遍历求n的因子,另一半直接通过n/i求得。
class Solution {
public int kthFactor(int n, int k) {
List<Integer> factors = new LinkedList<>();
List<Integer> factors_ = new LinkedList<>();
for (int i = 1; i <= Math.sqrt(n); ++i) {
if (n % i == 0) {
factors.add(i);
if (i != n/i) {
factors_.add(n / i);
}
}
}
Collections.reverse(factors_);
factors.addAll(factors_);
if (k > factors.size()) {
return -1;
} else {
return factors.get(k - 1);
}
}
}