С этого вопроса Java: get greatest common divisorJava: получите самый большой общий делитель, какой метод лучше?
В получении НОД данных любого типа ли int
, long
, Integer
, Long
, какой ответ лучше с точки зрения точности, скорости, использование процессора и т.д.?
А:
private static int gcdThing(int a, int b) {
BigInteger gcd = BigInteger.valueOf(a).gcd(BigInteger.valueOf((b)));
return gcd.intValue();
}
Б:
public int GCD(int a, int b) { return b==0 ? a : GCD(b, a%b); }
Проверьте его. Создайте список или массив из множества чисел и проверьте время, которое каждый из них выполнит. Изменить: вероятно, это не BigInteger, потому что это имеет тенденцию быть медленным даже с настройками. – Xabster
Если вы измените второй метод от рекурсивного к итеративному, это, вероятно, даст наилучшие результаты. – alfasin
Ну, я еще не пробовал коды бенчмаркинга. Наверное, я просто испытаю это сам. – Marl