Какой самый быстрый способ в Java получить количество факторов, которые имеет число

Я пытаюсь написать функцию на Java, которая будет возвращать количество факторов, которые имеет определенное число.

Необходимо учитывать следующие ограничения.

  1. Это следует делать с помощью BigInteger.
  2. Сохранение ранее сгенерированных чисел не допускается, поэтому требуется больше обработки и меньше памяти. (Вы не можете использовать "Сито Аткина", как в это)
  3. Отрицательные числа можно игнорировать.

Это то, что у меня есть до сих пор, но это очень медленно.

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;
}

10
задан Community 23 May 2017 в 12:08
поделиться