Я хотел бы сделать этот фрагмент кода быстрее. Он возвращает все факторы (простые числа) длинного числа. Очевидно, что минуты должны быть выполнены, если longNumber
является конкретным.Улучшите код, который факторизуется быстрее?
int div = 2;
String factors = "";
while (longNumer != 1)
{
if (longNumer % div == 0)
{
longNumer /= div;
factors += div + " ";
}
else { div++; }
}
//longNumber = 10, gives: 2 5.
//longNumber = 150, gives: 3 5 7.
//longNumber = 10523, gives: 17 619.
Это занимает слишком много времени с номерами таких «7544222046562688368», и это не очень хорошо, что вы могли бы предложить?
Используйте memoization для простых чисел, и код будет иметь большую производительность. –
Если ваш алгоритм действительно дает '3,5,7' в качестве факторов' 150', я предлагаю вам сделать это правильно, прежде чем тратить время на ускорение. –