Я пытаюсь написать функцию на Java, которая вернет число факторов, которые имеет определенный номер.
Необходимо учитывать следующие ограничения.
- Это должно быть сделано с помощью BigInteger
 - Сохранение предыдущих сгенерированных номеров недопустимо, поэтому больше обработки и меньше памяти. (Вы не можете использовать "Сито Аткина", как в this)
 - Отрицательные числа можно игнорировать.
 
Это то, что у меня есть до сих пор, но оно очень медленное.
public static int getNumberOfFactors(BigInteger number) {
    // If the number is 1
    int numberOfFactors = 1;
    if (number.compareTo(BigInteger.ONE) <= 0)  {
        return numberOfFactors;
    }
    BigInteger boundry = number.divide(new BigInteger("2"));
    BigInteger counter = new BigInteger("2");
    while (counter.compareTo(boundry) <= 0) {
        if (number.mod(counter).compareTo(BigInteger.ZERO) == 0) {
            numberOfFactors++;
        }
        counter = counter.add(BigInteger.ONE);
    }
    // For the number it self
    numberOfFactors++;
    return numberOfFactors;
}