Я пытаюсь получить количество делителей 64-битного целого числа (больше 32-битного)
Мой первый метод (для небольших чисел) заключался в том, чтобы разделить число, пока в результате не получится 1, подсчитать количество совпадающих простых чисел и использовать формулу (1 + P1)(1+ P2)..* (1 + Pn) = количество делителей
Например:
24 = 2 * 2 * 2 * 3 = 2^3 * 3^1
==> (3 + 1)*(1 + 1) = 4 * 2 = 8 делителей
public static long[] GetPrimeFactor(long number)
{
bool Found = false;
long i = 2;
List<long> Primes = new List<long>();
while (number > 1)
{
if (number % i == 0)
{
number /= i;
Primes.Add(i);
i = 1;
}
i++;
}
return Primes.ToArray();
}
Но для больших целых чисел этот метод требует множества итераций. Я нашел метод под названием Квадратное решето для факторизации с использованием квадратные числа. Теперь, используя мой скрипт, это может быть намного проще, потому что числа намного меньше.
Мой вопрос: как я могу реализовать это квадратное сито?